使用 WWW-Authenticate: Digest 進行 HTTP 摘要認證時,用戶輸入錯誤憑證,瀏覽器不會即時顯示錯誤,而是允許重試三次,第三次失敗後才彈出錯誤頁面。
WWW-Authenticate: Digest nonce=...Authorization: Digest response=... 重試服務端只能返回 401,無法強制瀏覽器在第一次失敗就彈出自定義錯誤。瀏覽器的原生認證對話框不支援自定義錯誤文案。
// 登錄頁 POST /login
if (valid(username, password)) {
session.setAttribute("user", user);
return "redirect:/dashboard";
} else {
model.addAttribute("error", "用戶名或密碼錯誤");
return "login"; // 即時顯示錯誤
}
Digest 認證的瀏覽器原生重試機制導致錯誤提示延遲,現代 Web 應用建議改用表單登錄 + Session/JWT 以獲得即時、可控的用戶體驗。