Apache Shiro html
1.權限控制分爲 a.粗粒度 URL 級別權限控制web
b.細粒度方法級別權限控制spring
2.使用shiro進行權限控制主要有四種主要方式 :
a、 在程序中 經過 Subject 編程方式進行權限控制
b、 配置 Filter 實現 URL 級別粗粒度權限控制
c、 配置代理,基於註解實現細粒度權限控制
d、 在頁面中使用 shiro 自定義標籤實現 頁面顯示權限控制 編程
3.shiro實際應用之基本配置:
a.用父工程引入shiro
安全
b.配置web.xmlapp
c.配置applicationContext-shiro.xml
ui
d.配置安全管理器
spa
搞定使用shiro以前所必須的基本配置後還須要瞭解 Shiro 的執行流程: 代理
應用程序 --- Subject --- SecurityManager --- Realm 安全數據
xml
自定義 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:add、 courier:list、 courier:* ,若是用戶具備父權限,操做
全部子權限功能
權限 courier:list 包含 courier:list:10
/** * @author: Mr.shan * @creationTime:2017.12.3 */