1. 程式人生 > >了解權限控制框架shiro 之實際應用.

了解權限控制框架shiro 之實際應用.

註入 工程 bsp 權限 管理 https 框架 require bean

  Apache Shiro

1.權限控制分為 a.粗粒度 URL 級別權限控制

       b.細粒度方法級別權限控制

2.使用shiro進行權限控制主要有四種主要方式 :
  a、 在程序中 通過 Subject 編程方式進行權限控制
  b、 配置 Filter 實現 URL 級別粗粒度權限控制
  c、 配置代理,基於註解實現細粒度權限控制
  d、 在頁面中使用 shiro 自定義標簽實現 頁面顯示權限控制

3.shiro實際應用之基本配置:
  a.用父工程引入shiro
技術分享圖片

  b.配置web.xml

技術分享圖片

  c.配置applicationContext-shiro.xml

技術分享圖片

  d.配置安全管理器

技術分享圖片

  

搞定使用shiro之前所必須的基本配置後還需要了解 Shiro 的執行流程:   

  應用程序 --- Subject --- SecurityManager --- Realm 安全數據

自定義 Realm 對象,實現認證方法:

  a.自定義 Realm 實現 Realm 接口 (實際開發中,只需要繼承 AuthorizingRealm

  b.將自定義 Realm 註入安全管理器 SecurityManager 當中

實現認證和授權方法.

4.對頁面部分功能添加權限和角色需要

技術分享圖片

5. Apache Shiro 權限控制(小結)

第一種: URL 級別粗粒度權限控制
配置 web.xml shiroFilter 攔截 /*
spring applicationContext*.xml 配置文件中配置同名 bean,配置
filterChainDefinitions 攔截控制規則
xxx.html* = anon (未登錄可以訪問)
xxx.html* =authc (必須登錄才能訪問 )
xxx.html* = perms[權限] (需要特定權限才能訪問)
xxx.html* = roles[角色] (需要特定角色才能訪問 )

第二種: 方法級別細粒度權限控制
spring applicationContext*.xml 配置 spring aop spring 管理 bean 對象開啟 shiro
註解支持
@RequiresPermissions(權限) 需要特定權限才能訪問
@RequiresRoles(角色) 需要特定角色才能訪問
@RequiresAuthentication 需要認證才能訪問

第三種:通過 shiro 自定義標簽,實現頁面元素顯示控制
<shiro:authenticated> 登錄後才能訪問
<shiro:hasPermission name="abc"> 需要特定權限才能訪問
<shiro:hasRole name="abc"> 需要特定角色才能訪問

第四種:在程序中通過代碼 判斷用戶是否具有指定權限(不太常用 ,有代碼侵入 )

補充: 權限表達式 “:”代表子權限
權限 courier 包含 courier:addcourier:listcourier:* ,如果用戶具有父權限,操作
所有子權限功能
權限 courier:list 包含 courier:list:10

/**
* @author: Mr.shan
* @creationTime:2017.12.3
*/

了解權限控制框架shiro 之實際應用.