【发布时间】:2010-04-22 21:35:15
【问题描述】:
我使用 php 对用户进行身份验证,然后在幕后再次使用单个 .htaccess 用户名和密码对他们进行第二次身份验证。这对所有用户都是一样的,但我不希望他们必须再次输入用户名和密码,他们现在可以进入受密码保护的目录。我不喜欢使用http://username@password:somedomain.com。
有什么想法吗?
【问题讨论】:
标签: php authentication .htaccess dialog
我使用 php 对用户进行身份验证,然后在幕后再次使用单个 .htaccess 用户名和密码对他们进行第二次身份验证。这对所有用户都是一样的,但我不希望他们必须再次输入用户名和密码,他们现在可以进入受密码保护的目录。我不喜欢使用http://username@password:somedomain.com。
有什么想法吗?
【问题讨论】:
标签: php authentication .htaccess dialog
你不应该这样做。
要么:
将代码添加到您的 .htaccess 保护目录以使用您的 PHP 身份验证方案并删除 .htaccess 身份验证。
编写一个新的 PHP 页面/脚本,经过身份验证的用户将通过它访问所有受保护的内容。将受保护的内容移出 Web 根目录,或使用您的 .htaccess 文件拒绝所有访问。您的脚本将能够访问这些文件,但用户必须通过脚本才能访问它们。
【讨论】:
如果你想避免多次登录但需要HTTP认证,你可以only使用HTTP认证进行实际登录。这是因为 PHP 可以发出和响应此类标头。
http://php.net/manual/en/features.http-auth.php
这样用户会收到一个弹出窗口,PHP 可以读取它并做出相应的响应,并且浏览器将通过它并通过后续请求消除进一步的提示。
注意:此解决方案不适用于 CGI 版本的 PHP。
【讨论】:
抱歉,我认为这是不可能的(除非您想使用 username:pass@url 方案)。您可以在幕后编写一些 ajax 来执行此操作,这意味着浏览器将记住该区域的身份验证(也许,我从未真正尝试过)。但是无论如何,您仍然需要用户名/密码。
为了不在浏览器上以明文形式传输密码的安全性(我假设您正在使用 https 通过网络传输密码,或者如果您不是,您应该这样做!)我认为这会有点烦人用户,但在我看来不是很多麻烦。
当然,您可以在 PHP 中对另一个文件夹进行身份验证,这将解决问题,或者将所有受保护的代码放在一个带有一个 HTTP 身份验证的地方,但我认为您不希望(或不能)这样做这个。
【讨论】: