天天看點

Spring Security3 頁面 權限标簽

應用标簽庫:<%@ taglib prefix='security' uri='http://www.springframework.org/security/tags' %> 

<security:authorize>是一個流程控制标簽,能夠在滿足特定安全需求的條件下顯示它的内容體。它有三個互斥的參數: 

ifAllGranted——是一個由逗号分隔的權限清單,使用者必須擁有所有列出的權限時顯示; 

ifAnyGranted——是一個由逗号分隔的權限清單,使用者必須至少擁有其中的一個權限時才能顯示; 

ifNotGranted——是一個由逗号分隔的權限清單,使用者未擁有所有列出的權限時才能顯示。 

<security:authentication>獲得屬性的值比如要獲得使用者名可以這麼寫: 

<security:authentication property="principal.username"></security:authentication> 

他有三個屬性,property是必須的,另外scope和var,var定義一個變量,scope定義var存在的範圍

例子:

有時需要在頁面顯示使用者名,或者根據使用者角色顯示或者不顯示一些内容。這需要使用到spring security提供的标簽庫。

在頁面中引入标簽庫:

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

使用标簽庫的示例:

<sec:authentication property="principal" var="authentication"/> <sec:authorize ifAllGranted="ROLE_USER">可以通路</sec:authorize> 使用者名:${authentication.username }<br />

前台 ROLE_ANONYMOUS表示匿名使用者

在配置檔案中可以設定頁面進入的權限

<intercept-url pattern="/Homepage.*" access="ROLE_ADMIN,IS_AUTHENTICATED_ANONYMOUSLY"/>

IS_AUTHENTICATED_ANONYMOUSLY允許匿名使用者進入

IS_AUTHENTICATED_FULLY 允許登入使用者進入

IS_AUTHENTICATED_REMEMBERED 允許登入使用者和rememberMe使用者進入

IS_AUTHENTICATED_FULLY:是則滿足以下情況傳回通過: **.既不是RememberMeAuthentication也不是AnonymousAuthenticationToken的執行個體 IS_AUTHENTICATED_REMEMBERED:是則滿足以下任一情況傳回通過: a*.Authentication是RememberMeAuthenticationToken的執行個體 b*.既不是RememberMeAuthentication也不是AnonymousAuthenticationToken的執行個體 IS_AUTHENTICATED_ANONYMOUSLY:是則滿足以下任一情況傳回通過: a*.Authentication是AnonymousAuthenticationToken的執行個體 b*.既不是RememberMeAuthentication也不是AnonymousAuthenticationToken的執行個體 c*.Authentication是RememberMeAuthenticationToken的執行個體

spring-security 在jsp中的标簽庫 1.在jsp中聲明

2.标簽 目前共有三個标簽    

    2.1、authorize标簽 這個标簽用來決定它的内容是否會被執行.

顯示一個特定的連結,如果使用者允許點選它.

2.2、authentication标簽 這個标簽允許通路目前的Authentication 對象, 儲存在安全上下文中。 比如,如果Authentication 的principal 屬性是Spring Security 的UserDetails 對象的一個執行個體, 就要使用

來渲染目前使用者的名稱。

當然,它不必使用JSP 标簽來實作這些功能,一些人更願意在視圖中保持邏輯越少越好。你可以在你的MVC 控制器中通路Authentication 對象( 通過調用 SecurityContextHolder.getContext().getAuthentication()) 然後直接在模型中添加資料,來渲染視圖。

2.3、accesscontrollist标簽 這個标簽紙在使用Spring Security ACL 子產品時才可以使用。它檢測一個用逗号分隔的特 定領域對象的需要權限清單。如果目前使用者擁有這些權限的任何一個,标簽内容就會被執行。 否則,就會被略過。