每次用户关闭浏览器时,基本身份验证似乎都会忘记登录。除非用户强行删除 cookie 等,否则是否可以让它记住它(例如至少 30 天)?
我尝试添加以下内容但没有什么变化:
RewriteEngine On
RewriteCond %{HTTP_COOKIE} remember_me=([^;]+) [NC]
RewriteRule ^ - [E=REMOTE_USER:%1]
Header always set Set-Cookie "remember_me=%{REMOTE_USER}e; Path=/; Max-Age=2592000; HttpOnly; Secure" env=REMOTE_USER
不。
原因有很多,其中之一是HTTP Basic 身份验证 不使用 cookie。另一个原因是,例如基本身份验证方法也无法识别会话,也不支持注销方法。
顾名思义:它是一种非常基本的身份验证方法,不应用于任何现代 Web 应用程序中的访问控制。
更准确地说——这取决于客户。
基本身份验证完全无状态。每次向服务器发出请求时,都必须反复发送凭据。此外,服务器还必须针对每个请求单独验证客户端。没有会话,因此,如上面的答案所述,没有 cookie。基本上,客户端不会发送 cookie 的内容,而是再次发送其凭据。它只是一个 HTTP 标头,而不是另一个。
“记住登录信息”完全发生在客户端。如果没有它,如果您在浏览器中打开一个经过基本身份验证的网页,您将不得不输入密码 10-100 次,具体取决于加载需要多少个子请求。这就是为什么几乎所有客户端至少在当前页面加载时“记住登录信息”,即使您没有单击“记住”复选框,否则它完全无法使用。
因此从技术上讲,如果你可以将浏览器配置为永远记住你的 basic-auth,那么它就不会再询问你了。实际上,大多数浏览器都不支持此功能,只会记住当前会话或浏览器实例。
如果你无法控制你的客户端,那你就没戏了。在服务器端,如上所述,你什么也做不了,因为服务器会根据每个请求来处理基本身份验证。