我的應用程序是運行在Glassfish 3.0.1上的Java EE 6應用程序。JavaEE安全性,訪問受限制頁面:退出的用戶被正確重定向。登錄的用戶不是
我正在使用Java EE安全性和JDBC領域。所以我給我的一些網頁添加了限制。 我添加了以下登錄,配置和安全性約束我的web.xml:
<!-- Redirect access of restricted pages to index.jsp -->
<login-config>
<auth-method>FORM</auth-method>
<realm-name>jdbc</realm-name>
<form-login-config>
<form-login-page>/index.jsp?login=login</form-login-page>
<form-error-page>/index.jsp?login=error</form-error-page>
</form-login-config>
</login-config>
<!-- Restrict access for deanery related resources -->
<security-constraint>
<display-name>Deanery Constraint</display-name>
<web-resource-collection>
<web-resource-name>Deanery Content</web-resource-name>
<description />
<url-pattern>/deanery/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description />
<role-name>DEANERY</role-name>
</auth-constraint>
</security-constraint>
如果用戶登出這工作得很好。如果他試圖訪問/ deanery /中的頁面,他將被重定向到index.jsp(重定向到jsf)。
當用戶登錄,獲得合適的角色時,他可以成功訪問受限制的資源。所以一切都很好,直到這裏。
現在的問題:當權限較小的用戶(在我的例子中是學生)登錄到應用程序,並嘗試訪問受限制的頁面時,他不會重定向到在我的web.xml中配置的錯誤頁面。相反,他顯示一個醜陋的Glassfish的403頁:
HTTP狀態403 - 訪問請求的資源已被拒絕
遺憾的是,似乎沒有選擇捕獲異常在我CustomExceptionHandler。它甚至沒有顯示在我的server.log(儘管我切換到最好的水平)。
我該怎麼做才能讓用戶重定向到我的錯誤頁面,而不是顯示403頁面?爲什麼用戶沒有重定向到index.jsp,就像他退出時一樣?
編輯:
只是試圖與相應的代碼,以我的web.xml中添加了一個錯誤頁面。
<error-page>
<error-code>403</error-code>
<location>/index.jsp?login=login</location>
</error-page>
沒有效果,仍然Glassfish錯誤頁面,而不是我自己的。
我已經隱藏了受限資源的鏈接。但是如果有人在瀏覽器中輸入地址,我想讓他顯示正確的信息。 – ifischer 2010-07-27 15:22:19
爲什麼評價爲負?佐爾坦說他是一個新手,他提供了他的解決方案,可能不是推薦的解決方案,但他試過了,對吧? – arg20 2011-03-30 05:09:14