混合身份验证在使用自定义 php 会话路径时不进行身份验证

2022-08-30 23:46:20

我在使用混合身份验证插件时遇到问题。我已将插件作为弹出窗口包含在我的主页中。从主页单击登录按钮时,插件将以颜色框加载。

在我的服务器中,我无法使用默认的php会话保存路径,因此我已将其设置为php临时路径,以便在根文件夹的索引.php中保存会话。

$dir = sys_get_temp_dir();
session_save_path($dir);

更新此代码后,插件正在验证客户成功选择的社交媒体并返回我的网站,但它没有通过以下条件,

$hybridauth->isConnectedWith( $_GET["connected_with"] ) // it is always return false

在第二种情况下,我已经更新了插件文件夹的索引.php会话保存路径,但是当时在登录弹出窗口中,而不是显示登录UI,它直接显示如下错误页面

"You cannot access this page directly."

任何帮助将不胜感激。提前致谢。


答案 1

问题是您的默认会话路径:

$dir = sys_get_temp_dir();
session_save_path($dir);

我会print_r会议,看看注册了什么。为什么默认会话路径有问题?我不会试图改变它,并确保它首先起作用。这正在改变HybridAuth的主要功能。

为什么不能使用默认的php会话保存路径?您是否在共享主机上?

--

如果您具有 shell 访问权限,请确保 Web 服务器用户对目录具有写入访问权限;这应该处理这个问题。


答案 2

和经常一样:RTM和发现使用isConnectedWith

isConnectedWith()如果当前用户连接到给定提供程序,则返回 true 或 false。Hybrid_Auth::isConnectedWith() 使用 PHP Sessions。要了解更多信息,请参阅混合身份验证会话部分。

Hybrid_Auth::isConnectedWith(provider)

其中提供程序是测试服务的名称。例如: Hybrid_Auth::isConnectedWith('Twitter')

请确保您的 $_GET 返回正确的服务名称。

如果你想要一个连接的提供程序列表:Hybrid_Auth::getConnectedProviders()

如果要检查会话的数据:Hybrid_Auth::getSessionData()

应用程序接口!


推荐