本文章摘編、轉載需要註明來源 http://blog.csdn.net/shadowsick/article/details/8868863
當我們自訂了spring security3 的過濾鏈的時候發現頁面許可權控制標籤<sec:authorize之類的已經不能起效了,這是因為我們缺少一個必須的執行個體
所以找了下源碼看到需要一個DefaultWebInvocationPrivilegeEvaluator決策器執行個體,直接配置一個執行個體然後注入FilterSecurityInterceptor的執行個體即可
<!-- 頁面標籤許可權功能依賴 --><bean id="webInvocationFilter"class="org.springframework.security.web.access.DefaultWebInvocationPrivilegeEvaluator"><constructor-arg ref="filterSecurityInterceptor" /></bean>
這樣我們就可以在頁面繼續使用security的標籤
<%@ page language="java" pageEncoding="UTF-8"%><%@ taglib prefix='sec' uri='http://www.springframework.org/security/tags' %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>SPRING SECURITY TEST CENTER</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 使用者名稱:<sec:authentication property="name" />, 歡迎來到首頁!<br> 擁有許可權:<sec:authentication property="principal.authorities" /><br> 是否可用:<sec:authentication property="principal.enabled" /><br> 未被鎖定:<sec:authentication property="principal.accountNonLocked" /><br> <sec:authorize ifAnyGranted="ROLE_SUPERVISOR">您是超級管理員,可看到該資訊:(這裡可以用逗號分隔,加入多個角色你擁有管理員權限)</sec:authorize><br> <sec:authorize url='/test.jsp'>你登陸成功了可以看到: <a href="<%=path %>/supervisor/index.jsp">管理頁面</a></sec:authorize> <br><a href="<%=path %>/logout">登出登入</a> </body></html>