有关在我的Web应用程序中实现simplesamlphp库的问题

问题描述 投票:1回答:2

我试图在我的Web应用程序中实现simplesamlphp库。但是,当我调用requireAuth()函数时,我收到一条PHP致命错误消息。未捕获的异常:加载程序:文件名中的字符非法.....似乎他无法解析类SimpleSAML \ Module \ saml \ Auth \ Source \ SP但是我不知道为什么。有谁知道如何解决这个问题?我已经删除了整个simplesamlphp安装并重新安装。

我使用以下代码:

require 'var/www/simplesamlphp/lib/_autoload.php';
$lAuthSrc = new \SimpleSAML\Auth\Simple('default-sp');
if (!$lAuthSrc->isAuthenticated()) {
  $lAuthSrc->requireAuth();
}
$lAttributes = $lAuthSrc -> getAttributes();
foreach($lAttributes as $lAttribute) {
  print_r($lAttribute);
}

一些其他信息:配置的身份验证源测试正常运行。如果我通过配置的身份验证源登录,则一切正常,并且不会收到任何错误消息(在这种情况下,不会调用requireAuth()函数)。我使用的是最新版本的simplesamlphp v.1.18.3

如果需要更多信息,请告诉我。

php single-sign-on saml identity
2个回答
0
投票

老实说,您的路径看起来像是乱七八糟的……确定要使用:

require 'var/www/simplesamlphp/lib/_autoload.php';

不是

require '/var/www/simplesamlphp/lib/_autoload.php';

您确实相对于脚本的位置有一个'var / www'子目录吗?在我看来这是错误的。如果在/之前包含第一个var,它将使该路径成为SSP典型安装位置的绝对路径。


0
投票

谢谢大家的帮助。我今天早上发现了这个问题。问题是我用于自己的应用程序的自动装带器。我在另一个文件中注册了应用程序自动加载器,该文件在您上面的代码之前执行。并且simplesamlphp使用某些条件,例如:

if (!class_exists($className))

并且因为我在函数class_exists检查类是否存在于我的应用程序之前注册了我的应用程序自动加载器。在我的应用程序中,我不使用名称空间,这就是问题所在。

为了解决此问题,我在使用simplesamlphp代码之前取消了我的应用程序自动加载器的注册,并在simplesamlphp代码之后再次注册了该自动加载器。

我希望这可以减轻你们的一些头痛。

© www.soinside.com 2019 - 2024. All rights reserved.