我有一個運行在JBoss 7.1.1上的Java EE 6 Web應用程序,它有一些頁面需要驗證,而有些頁面不需要驗證。對於已驗證的頁面,我正在使用Servlet 3.0 Programmatic Security,如this previous post中所述。Java EE 6安全性和重定向
在我的web.xml,我有以下條目
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login</form-login-page>
<form-error-page>/loginError</form-error-page>
</form-login-config>
</login-config>
,並在我的登錄類,我有@PostConstruct
註釋的方法,其中請求的頁面被捕獲: String previousURL = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get(RequestDispatcher.FORWARD_QUERY_STRING)
然而,它評估爲/ login頁面本身,而不是用戶請求的頁面,因爲web.xml中的login-config設置,所以它是由JBoss轉發的,然後是。因此,當我轉到previousURL時,它只是將我帶回登錄頁面,而不是用戶最初單擊的頁面。我究竟做錯了什麼?
感謝您的支持。在改變它之後,我仍然將前一個URL放到/ login頁面,而不是最初請求的頁面。 – Anand 2013-03-05 20:09:16
而你是正面的@並且提供的用戶憑證已被成功驗證? – kolossus 2013-03-06 04:01:46
我這麼認爲。這裏是JBoss的日誌條目:'Excuting query:select password from PRINCIPAL where username =?,with username:admin ... User'admin'authenticated,loginOk = true commit,loginOk = true ... 指定用戶到角色管理 ... 用戶:admin已通過身份驗證 – Anand 2013-03-06 17:50:30