Php 如何在不需要登录的情况下获取Pubcookie用户名

Php 如何在不需要登录的情况下获取Pubcookie用户名,php,authentication,Php,Authentication,这后面的两段是背景信息,以防我把这个问题想错了。真正的问题在后面 我正在为使用的组织创建一个应用程序。在过去,这非常方便,因为我不必为了获得用户名而实施任何会话身份验证;在PHP中,只要服务器配置为需要有效的用户,我所需要做的就是获取$_SERVER['REMOTE_USER'] 这些过去的应用程序都需要登录才能看到任何内容;.htaccess中的Apache配置会导致任何未经身份验证的用户重定向到登录服务器以获取凭据。现在我正在考虑一个可选的登录系统,就像互联网上其他地方使用的一样。我希望内容

这后面的两段是背景信息,以防我把这个问题想错了。真正的问题在后面

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

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

问题是:如果用户没有经过身份验证,而我正在强制进行身份验证,pubcookie会将用户重定向到登录服务器以获得身份验证。如果用户已通过身份验证,并且我正在强制进行身份验证,则我可以在$\u服务器['REMOTE\u user']中获取身份验证信息。但是,如果用户已通过身份验证,但我不需要身份验证,则无法获取身份验证信息。为了请求这些信息,我必须请求它,这会锁定匿名用户

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


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

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

.htaccess:

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

<Files login.php>
  PubcookieNoPrompt off
</Files>
PubcookieAppID#APPID#
公共图书馆
AuthType NetID
需要有效用户
公共图书馆

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

如果用户未通过身份验证,pubcookie如何知道用户是谁?它不知道;如果用户已通过身份验证,但不需要身份验证,则我无法获得身份验证。我希望能够以一种允许没有身份验证的方式获得身份验证,但如果它存在,请告诉我它是什么。请详细说明。你的句子听起来与我完全矛盾,我很难破译它。我可以给你一个例子:假设用户没有经过身份验证。如果我强制进行身份验证,pubcookie会将它们重定向到登录服务器以获得身份验证。如果用户已通过身份验证,并且我正在强制进行身份验证,则我可以在$\u服务器['REMOTE\u user']中获取身份验证信息。但是,如果用户已通过身份验证,但我不需要身份验证,则无法获取身份验证信息。为了请求这些信息,我必须请求它,这会锁定匿名用户。你应该在问题的这一部分添加代码:“我可以按需请求”。这可能会使这一点更加清楚。