1. 程式人生 > >spring security3教程系列--頁面許可權標籤問題

spring security3教程系列--頁面許可權標籤問題

本文章摘編、轉載需要註明來源 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>