2012-03-07 1 views
0

Я использую защиту Apache «Auth» для ограничения доступа к моему веб-сайту (через команды в файле .htaccess, файле .htpasswd и т. Д.).Могу ли я программно вывести пользователя из авторизации .htaccess?

Есть ли способ отменить авторизацию пользователя через мой PHP-скрипт, эффективно предоставив им возможность выйти из системы?

+0

И ответ: Не совсем. Этот вопрос задан раньше, поместите «trac» в свой поиск. – hakre

+0

Хорошо, спасибо. Я спросил на сайте unix stackexchange и не видел его там, но я буду искать «trac». – Eric

+0

В trac trac есть один билет, который содержит много информации. По крайней мере один SO вопрос связывает это, но я не помню ссылку из головы. – hakre

ответ

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

С этим типом аутентификации, имя пользователя и пароль на самом деле отправить в браузере на каждом последующем запросе. Поскольку нет возможности рассказать браузеру «эй, перестаньте их отправлять», невозможно сделать то, что вы пытаетесь сделать.

(Если, однако, вы имели PHP скрипт участвует, что часть аутентификации обрабатывал, вы можете установить переменную сеанса помеченного игнорировать действительную аутентификацию и делать вид, что пользователь вышел из системы.)

Однако , в терминах хорошее решение, нет ни одного. Пользователь останется в системе, пока его или ее браузер не решит прекратить отправку заголовков (обычно, когда браузер закрыт).

Смежные вопросы