我的web.xml:歡迎文件忽略安全約束
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<welcome-file-list>
<welcome-file>/secured/secure.xhtml</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>
<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted</web-resource-name>
<url-pattern>/secured/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>jdbc-realm</realm-name>
<form-login-config>
<form-login-page>/public/login.xhtml</form-login-page>
<form-error-page>/public/error.xhtml</form-error-page>
</form-login-config>
</login-config>
我想我的web應用重定向未授權的用戶登錄頁面。有趣的事情,我有這個工作,但我做了一些愚蠢的變化,現在訪問localhost:8080
我總是看到secure.xhtml即使沒有登錄。localhost:8080/secured/secure.xhtml
重定向罰款。
哇感謝!但是,檢查用戶是否已登錄?我應該在同一個過濾器中做這個嗎?將容器從容器中取出可以嗎? – 2012-04-17 14:50:45
''已經做到了。你不需要自己做。唯一的一點是你需要執行重定向而不是前進。重定向會創建一個全新的請求,然後再通過新的URL觸發安全約束。對於轉發來說已經太晚了,因爲安全約束*已經*已經根據'/'的初始URL進行了測試,這是根據您的配置公開訪問而沒有限制。 –
BalusC
2012-04-17 14:51:11
我有一個過濾器的問題。如果我沒有調用'security-constraint'過濾器,如果我註釋掉'constraint',它就開始工作。也許是因爲它們在/ secured/*網頁上重疊?服務器 - glassfish 3.1。如果你有時間,請幫我一把。 – 2012-04-17 17:15:24