spring security3教程系列--頁面許可權標籤問題
阿新 • • 發佈:2018-12-27
本文章摘編、轉載需要註明來源 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>