關於Apache shiro許可權控制學習小結
阿新 • • 發佈:2018-12-10
第一種: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:authenticted>
需要特定許可權才能訪問 <shiro:hasPermission name="xxx">
需要特定角色才能訪問 <shiro:hasRole name="xxx">
第四種:在程式中通過程式碼 判斷使用者是否具有指定許可權( 不太常用 )
1.角色授權實現
Subject currentUser = SecurityUtils.getSubject();
if(currentUser.hasRole("xxx")){
//填寫擁有該角色的處理邏輯
}else{
//無該角色的處理邏輯
}
2.資源授權實現
if(currentUser.isPermitted("permission:xxx")){
//填寫擁有該許可權的處理邏輯
}else{
//無該許可權的處理邏輯
}