這年頭居然還有人使用 HTTP Authentication (Basic and Digest Access Authentication)
不管了,既然是客戶需求那就只好使用了。
不過麻煩的來了
使用 HTTP Authentication 做登入很方便
只要 web server 吐一個 WWW-Authenticate: Basic realm="xxxx" 的 header 就好了
但是要登出就麻煩了
原本想說做一個 logout.php 之類的固定回傳 401 Unauthorized 就好
但是會有當次 dialog 出來時無法再度 login 的 bug
那該怎麼辦才好呢???
這時候IE就很好用啦
只要
document.execCommand("ClearAuthenticationCache");
麻煩的在 mozilla 跟 webkit 上面
原先使用 ajax 的 beforeSend 去輸入錯誤的帳密
結果 webkit 可用 mozilla 不能使用
因為 mozilla 不給改 header 阿~~
研究了一小時終於試出一個比較好的辦法
$.ajax({
type: 'GET',
async: false,
url: '/#',
username: 'logout',
password: 'logout'
});
組合以上方法
$('#logout').click(function(){
if(document.execCommand("ClearAuthenticationCache")){
}
else{
$.ajax({
type: 'GET',
async: false,
url: '/#',
username: 'logout',
password: 'logout'
});
}
});
這樣IE5~11、webkit 與 mozilla 三種瀏覽器行為就會完全一致了
沒有留言:
張貼留言