在個人界面代碼中用如下方式控制某個按鈕是否顯示,如:java
<@sec.authorize ifAnyGranted="ROLE_ADMIN"> <input type="button" id="deleteButton" class="formButton" url="order!delete.action" value="刪除" disabled hidefocus /> </@sec.authorize>
目的是讓只有ROLE_ADMIN權限的用戶才能看到刪除按鈕,但結果不管是擁有ROLE_ADMIN權限的仍是沒有ROLE_ADMIN權限的都看不到刪除按鈕了。web
最後發現是web.xml文件中的配置問題,個人基礎框架默認只對admin目錄下的資源進行過濾,以下:spring
<filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/admin/*</url-pattern> </filter-mapping>
但個人頁面其實是在order目錄下的,因此頁面沒有通過權限過濾器的控制,天然是獲取不到用戶的角色信息了。只要在web.xml中增長如下配置便可app
<filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/order/*</url-pattern> </filter-mapping>