如何获取Pubcookie用户名而无需登录

时间:2011-07-14 18:46:10

标签: php authentication

此后的两段是背景信息,以防我认为这个问题错了。实际问题在于。

我正在为使用Pubcookie的组织创建应用程序。在过去,这非常方便,因为我没有必要实现任何会话身份验证才能获得用户名;在PHP中,只要服务器配置为需要有效用户,我需要做的就是获取$ _SERVER ['REMOTE_USER']。

这些过去的应用程序都需要登录才能看到任何内容; .htaccess中的Apache配置会导致任何未经身份验证的用户重定向到登录服务器以获取凭据。现在我正在考虑一个可选的登录系统,就像在互联网上的其他地方一样。我希望内容始终可见,但允许应用程序请求有效的用户名。

问题在于:如果用户未经过身份验证且我正在强制进行身份验证,则pubcookie会将其重定向到登录服务器以进行身份​​验证。如果用户已通过身份验证,并且我正在强制进行身份验证,则可以在$ _SERVER ['REMOTE_USER']中获取身份验证信息。但是,如果用户已通过身份验证但我不需要身份验证,则无法获取身份验证信息。为了请求我必须要求的信息,这会锁定匿名用户。

如果没有要求存在的话,我如何获得Pubcookie经过身份验证的用户名?问另一种方式,有没有办法获得有时可能返回“不,没有用户名”的用户名?我查看了PubcookieOnDemand,似乎我可以设置一个登录脚本,该脚本位于.htaccess身份验证要求之后,可以在登录后设置ondemand cookie。但是,这并不理想,因为无论用户是否已经过身份验证,它都要求用户转到登录页面。此外,如果身份验证过期,则无法删除ondemand cookie,因为脚本在身份验证之后才会获得控制权。

我能找到的唯一解决方案是拥有一个存储pubcookie身份验证的登录链接并将其交给应用程序管理的会话,但我感到很懒,不想解决问题现在安全地跟踪用户会话。如果您有关于这方面的一些很好的信息,请随时在评论中传递一个链接。

1 个答案:

答案 0 :(得分:0)

好像我在PubcookieNoPrompt Apache指令中找到了自己的答案。它确实......正是我想要的。它只需要与关闭指令的登录脚本配对,如下所示:

htaccess的:

PubcookieAppID #APPID#
PubcookieNoPrompt on
AuthType NetID
require valid-user

<Files login.php>
  PubcookieNoPrompt off
</Files>

login.php文件可以执行任何操作,包括将基于GET数据的用户重定向回具有登录链接的页面。