2013-04-06 83 views
0

我正在使用摘要身份驗證的Restlet。效果很好。除了我想通過避免瀏覽器的身份驗證對話框彈出時,首次發回401時,使其更像ajax/Javascript友好。更改由Restlet發回的用於驗證的狀態代碼

這是我想將工作:

  1. 用戶名/密碼使用文本框獲得並存儲在JavaScript對象。
  2. Ajax調用來保護資源。
  3. Reselt發回帶有Digest Auth信息的非401代碼(比如406)。
  4. Javascript捕獲代碼,將請求/用戶/密碼打包到散列中,發送到restlet。

a)請問上述工作?

b)如何使用Restlet中的摘要發送不同的狀態碼?

回答

1

是的,您必須返回非401響應,因爲您無法更改瀏覽器行爲,因爲瀏覽器將始終顯示彈出窗口。

也參見How to prevent browser to invoke basic auth popup and handle 401 error using Jquery?

通過修改/重寫DigestAuthenticator和設置不同的響應改變響應,或者使用一個過濾器,將檢測到401和它切換到另一個狀態。

+0

我認爲過濾器是一個好方法。我是restlet的新手,任何關於如何在過濾器中工作的代碼提示? – adamSpline 2013-04-07 13:20:57

+0

與簡單的servlet過濾器沒有多大區別,只是實現後處理並更改狀態碼; – koma 2013-04-07 14:04:42

+0

謝謝。很棒! – adamSpline 2013-04-08 00:20:17