1. 程式人生 > >shiro進行許可權控制的四種方式

shiro進行許可權控制的四種方式

我們使用shiro進行許可權控制 有以下幾種方式
1.  URL攔截許可權控制:基於filter過濾器實現
我們在spring配置檔案中配置shiroFilter時配置
<!--指定URL級別攔截策略  -->
<property name="filterChainDefinitions"> 
<value>
/css/ = anon
/js/ = anon
/images/ = anon
/validatecode.jsp = anon
/login.jsp = anon
/userActionlogin.action = anon
/pagebasestaff.action = perms["staff-list"]
/ = authc
</value>
</property>


2. 方法註解許可權控制:基於代理技術實現
我們在程式碼方法上用註解宣告呼叫該方法需要什麼許可權。
首先要在spring配置檔案中進行宣告開啟shiro註解:
<!-- 開啟shiro框架註解支援 -->*
<bean id="defaultAdvisorAutoProxyCreator" 
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
<!-- 必須使用cglib方式為Action物件建立代理物件 -->
<property name="proxyTargetClass" value="true"/>
</bean>

<!-- 配置shiro框架提供的切面類,用於建立代理物件 -->
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"/>

然後在方法上宣告:
@RequiresPermissions("staff-delete")

//執行這個方法,需要當前使用者具有staff-delete這個許可權
public String deleteBatch(){
staffService.deleteBatch(ids);
return LIST;
}
*

3. 頁面標籤許可權控制:頁面表籤技術實現
首先要在jsp頁面進入表籤:
<%@ taglib uri="http://shiro.apache.org/tags" prefix="shiro" %>
然後包裹許可權控制的內容
<shiro:hasPermission name="Permission">
xxxxxxxxxxxxxxxx
</shiro:hasPermission>



4.程式碼級別許可權控制:
public String edit(){

Subject subject = SecurityUtils.getSubject();
subject.checkPermission("staff-edit");


Staff staff = staffService.findById(model.getId());
staff.setName(model.getName());
staff.setTelephone(model.getTelephone());
staff.setHaspda(model.getHaspda());
staff.setStandard(model.getStandard());
staff.setStation(model.getStation());
staffService.update(staff);
return LIST;
}

總結:
使用shiro進行許可權控制時 這四種方法並不是進行單一的使用,是相互結合的使用從而完整的進行許可權控制。

相關推薦

shiro進行許可權控制方式

我們使用shiro進行許可權控制 有以下幾種方式1.  URL攔截許可權控制:基於filter過濾器實現我們在spring配置檔案中配置shiroFilter時配置<!--指定URL級別攔截策略  --><property name="filterChain

springmvc配置shiro進行許可權控制

Shiro是一個強大易用的Java安全框架,提供了認證、授權、加密和會話管理等功能。本文將簡單介紹springmvc中如何配置shiro。 1.首先是maven中配置shiro所需要的jar包 <dependency><groupId>org.apa

Jfinal配合Shiro進行許可權控制

web專案總免不了使用者的管理與註冊,需求稍微再多一點兒,就涉及使用者的角色及許可權管理了,下面根據自己專案的實際經驗,介紹如何在Jfinal專案中使用Shiro來進行簡單的登陸及許可權管理。 主角簡介 Jfinal 位居開源中國年度熱門開源專案前列,簡單

shiro進行權限控制方式

shiro ```我們使用shiro進行權限控制 有以下幾種方式 1. URL攔截權限控制:基於filter過濾器實現 我們在spring配置文件中配置shiroFilter時配置 <!--指定URL級別攔截策略 --> <

Apache Shiro 許可權控制方式

第一種:URL 級別粗粒度許可權控制 配置 web.xml 的 shiroFilter 攔截 /* 在 spring 的 applicationContext*.xml 配置檔案中配置同名 bean,配置 filterChainDefinitions 攔截控制規則

C# 字符串拼接性能探索 c#中+、string.Concat、string.Format、StringBuilder.Append方式進行字符串拼接時的性能

ant runt info lap tel ole 3.2 ons empty 本文通過ANTS Memory Profiler工具探索c#中+、string.Concat、string.Format、StringBuilder.Append四種方式進行字符串拼接時的性能。

android進行非同步更新UI的方式

http://blog.csdn.net/mislaydu/article/details/51776247 大家都知道由於效能要求,Android要求只能在UI執行緒中更新UI,要想在其他執行緒中更新UI,我大致總結了4種方式,歡迎補充糾正: 使用Handler訊

JDBC進行批處理的方式

這裡以MySQL資料庫為例來展示四種通過jdbc實現批處理的四種方法,這裡只舉例了插入100條資料的寫法,其他大致相同。 第一種:最簡單,最好理解的(不要這樣寫) (沒工作經驗可能會這樣寫,執行效率

CSS之 使用CSS控制頁面的方式

前言  CSS在製作網頁中,是大量使用的一種語言,多參考一些網站的原始碼可以幫助我們快速掌握各種技巧並運用到實際製作中,下面小編就如何在網頁中引入CSS樣式表做一下簡單的介紹。CSS控制頁面  使用CS

angular創建自定義指令的方式

htm mil 成功 評論 utf-8 例如 angularjs size 限制   angular除了內置的部分指令,還可以通過.directive來自定義指令。要調用自定義指令,HTML 元素上需要添加自定義指令名。使用駝峰法來命名一個指令:nsHeader,在調用時使

java讀取配置文件常用的方式

ng- wrap play 獲取值 position trac resource 基於 tom 配置文件 放置在src下面 obj.propertiesclassName=com.store.order.dao.impl.OrderDaoImpl方式一@Test p

實現多線程的方式

註意 ger interrupt exception future pool port pre repl Java多線程實現方式主要有四種:繼承Thread類、實現Runnable接口、實現Callable接口通過FutureTask包裝器來創建Thread線程、使用Exe

VirtualBox虛擬機網絡設置(方式

總結 virtual 上網 模式 頁面 進行 虛擬機上網 conf ans VirtualBox的提供了四種網絡接入模式,它們分別是: 1、NAT 網絡地址轉換模式(NAT,Network Address Translation) 2、Bridged Adap

C#批量插入數據到Sqlserver中的方式 - 轉

大數 sqlserve 情況下 時間 void tor schema ase ble 先創建一個用來測試的數據庫和表,為了讓插入數據更快,表中主鍵采用的是GUID,表中沒有創建任何索引。GUID必然是比自增長要快的,因為你生成一個GUID算法所花的時間肯定比你從數據表中重新

Map集合遍歷的方式理解和簡單使用-----不能for循環遍歷

src 理解 version class post oid 循環 2017年 col ~Map集合是鍵值對形式存儲值的,所以遍歷Map集合無非就是獲取鍵和值,根據實際需求,進行獲取鍵和值 1:無非就是通過map.keySet()獲取到值,然後根據鍵獲取到值   f

python全棧開發【補充】單例模式的方式

實現 創建 初始 user 它的 pooled asa args 三種 一、什麽是單例模式 保證一個類只有一個實例,並提供一個訪問它的全局訪問點 二、優點 對唯一實例的受控訪問 單利相當於全局變量,但防止了命名空間被汙染 與單利模式功能相似的概念:全局變量、靜態變量

讓外部網絡訪問K8S service的方式

width 轉發規則 方案 核心 方式 基於 upload 規則 clas 本文基於kubernetes 1.5.2版本編寫 kube-proxy+ClusterIP kubernetes版本大於或者等於1.2時,配置: 修改master的/etc/kubernetes/p

.net cs後臺刷新aspx頁面的方式

request document HR direct string quest rec 方式 doc 一:Response.Redirect(Request.Url.ToString()); 二:Response.Write("<script language=jav

Java遍歷Map對象的方式

安裝 ado 實現 .get dbug class ndb 替代 out 關於java中遍歷map具體哪四種方式,請看下文詳解吧。 方式一 這是最常見的並且在大多數情況下也是最可取的遍歷方式。在鍵值都需要時使用。 1 Map<Integer, Integer>

python執行系統命令的方式

lib 信息 數值 成功 星期 控制 src 圖片 pos 一、os模塊 1. os.system(‘cmd‘) 在子終端運行系統命令,不能獲取命令執行後的返回信息以及執行返回的狀態 import os os.system(‘date‘) # 2016年 06月 30