2009-11-11 51 views
3

我注意到,一旦Firefox響應HTTP響應中的WWW-Authenticate頭部彈出一個模式。然後,Firefox會保存用戶名/密碼,直到Firefox關閉。 Web Developer插件使開發人員可以註銷。但是,應該向瀏覽器發送什麼HTTP消息來丟失這些緩存的憑據?WWW-Authenticate登出

回答

2

我找到了一個合理的解決方法。這有點牽扯,但工作得很好。我創建了一個GUID字段的表。它沒有從任何記錄開始。以下是解決方案:

  1. 用戶單擊「註銷」。
  2. 註銷腳本將GUID添加到新表中。
  3. 註銷腳本將用戶重定向到以GUID作爲參數的URL。
  4. 當用戶點擊一個GUID作爲參數的URL時,系統會在表中搜索GUID。
    1. 如果GUID位於表中,請使用GUID刪除記錄並給出無效的用戶名/密碼響應代碼(即使憑據正常)。
    2. 如果GUID不在表中,請驗證憑據。

這個新表可以得到快速的臃腫黑客,所以要確保每個用戶只能在表中的一項。您也可以使用時間戳並且有一個批處理作業每隔一段時間修剪一次表格。

3

恐怕沒有辦法優雅地向瀏覽器發送命令,以停止在用戶導航開始時(通過http 401響應)保存(並向每個http請求發送服務器)您收回的憑證。 。

1

Firefox將清除它的緩存WWW-auth UN/PW與403 Forbidden

鉻將通過403 Forbidden401 Not Authorized清除。

如果你想緩存,Safari會一直提示你。

IE是糞便。

+0

不幸的是,在使用WWW-auth的情況下,Chrome並沒有用401 Unauthorized或403 Forbidden頭文件清除PHP_AUTH_USER。 – jacouh 2013-10-15 11:55:33

+0

好的。我相信他們曾經這樣做過。似乎它在Chrome 18的某個地方發生了變化,如果我正確閱讀的話。事實證明,在這種情況下最好的做法是根本不使用WWW-auth,因爲沒有現代瀏覽器根據規範處理它。如果您不想保留憑據,則選擇更好的方法是將登錄信息存儲在可更容易刷新的cookie或會話中。對不起,如果這不是理想的... – pieman72 2013-10-18 08:01:20