我可以以编程方式将用户从.htaccess授权中注销吗?

时间:2012-03-07 23:02:29

标签: apache php .htaccess

我正在使用Apache“Auth”安全性来限制对我的网站的访问(通过.htaccess文件中的命令,.htpasswd文件等)。

有没有办法通过我的PHP脚本取消授权用户,有效地为他们提供了注销方式?

3 个答案:

答案 0 :(得分:2)

使用这种类型的身份验证,用户名和密码实际上是由浏览器在每个后续请求中发送的。由于没有办法告诉浏览器“嘿,停止发送”,没有办法做你想做的事。

(但是,如果您涉及处理部分身份验证的PHP脚本,则可以设置会话变量以进行标记以忽略有效身份验证并假装用户已注销。)

但是,就好的解决方案而言,没有一个。用户将保持登录状态,直到他或她的浏览器决定停止发送标题(通常是在浏览器关闭时)。

答案 1 :(得分:1)

<?
// this PHP will cause a logout event, and give the login prompt again

$AuthName='WHAT-EVER'; // must match AuthName in .htaccess.
header('HTTP/1.0 401 Unauthorized');
header('Content-type: text/html');
header('WWW-Authenticate: Basic realm="'.$AuthName.'"');

// now redirect them when they click cancel
// should be to a page with no password required.
// use an HTML meta redirect instead of HTTP 
// so it runs after the auth is cancelled.
?>
<html><head><meta http-equiv='refresh' content='0;../'></head></html>

答案 2 :(得分:0)