基於shiro RBAC的表設計
許可權控制的核心是RBAC,但是同個使用者可能具有多個角色,一個角色也可能關聯多個使用者。而這多與多的關聯關係維護起來特別麻煩,依照指定的角色具有的功能是相似的,所以在角色與使用者之間,新增了使用者組來進行中介進行管控。
實現Shiro自定義Realm
public class ShiroRealm extends AuthorizingRealm {
@Autowired
private UserEntityMapper userEntityMapper;
@Autowired
private RoleService roleService;
/**
* 授權
* @param principals
* @return
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
String userId = (String) principals.getPrimaryPrincipal();
UserRoleFlag userRoleFlag = roleService.getUserRoleFlags(userId);
return new SimpleAuthorizationInfo(userRoleFlag.getRoleFlags());
}
/**
* 登入認證
* @param token
* @return
* @throws AuthenticationException
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
String principal = (String) token.getPrincipal();
System.out.println("登入校驗:" + principal);
UserEntity entity = userEntityMapper.findByUsername(principal);
if (null == entity) {
throw new UnknownAccountException("未找到該使用者!");
}
System.out.println("獲取到使用者進行校驗....");
return new SimpleAuthenticationInfo(principal, entity.getPassword(), getName());
}
}
獲取角色許可權SQL
SELECT
d.*
FROM
sys_user_user_group a
INNER JOIN sys_user_group b ON a.user_group_id = b.id
INNER JOIN sys_role_user_group c ON a.user_group_id = c.user_group_id
INNER JOIN sys_role d ON c.role_id = d.id
WHERE
b.`status` = 1
AND d.`status` = 1
AND a.user_id = #{userId}
進行許可權驗證
com.example.hrh.module.sys.controllers.TestController
必須指定角色許可權認證
@RequiresRoles("admin")
@RequestMapping("perm/admin")
public String testAdmin() {
System.out.println(SecurityUtils.getSubject().getPrincipal());
return "admin許可權";
}
相關文章
- 基於RBAC的許可權設計模型模型
- Shiro-授權(RBAC)
- 基於MaxCompute的拉鍊表設計
- Rbac使用者角色許可權表設計
- React基於RBAC的許可權控制React
- RBAC-基於角色的訪問控制
- Shiro Filter的設計概念Filter
- 基於casbin的RBAC許可權實踐
- 基於RBAC的許可權管理系統
- 基於 Formily 的表單設計器實現原理分析 ORM
- 基於RBAC做資料許可權
- 基於RBAC實現許可權管理
- PHP-RBAC單角色設計-最簡單的設計方案PHP
- 基於角色的訪問控制RBAC是什麼? - TailscaleAI
- 基於vue(element ui) + ssm + shiro 的許可權VueUISSM
- 基於shiro的自定義註解的擴充套件套件
- 基於Vue,ElementUI開發的一款表單設計器VueUI
- 基於vue(element ui) + ssm + shiro 的許可權框架VueUISSM框架
- 基於原型的角色設計方法原型
- 基於 esbuild 的 universal bundler 設計UI
- 736【畢設課設】基於51微控制器的計程車計價器打表儀器設計
- 關於shiro安全框架和shiro的認證流程框架
- 基於RBAC的許可權控制淺析(結合Spring Security)Spring
- yamecent-admin 基於 Laravel 框架的 rbac 後臺管理系統Laravel框架
- shiro教程(1):基於url許可權管理
- 基於UDP程式設計UDP程式設計
- PHP 中基於 Casbin 做 RBAC + RESTful 許可權控制PHPREST
- 基於.NET架構的樹形動態報表設計與應用架構
- 基於FPGA的DDS研究與設計FPGA
- 基於MATLAB的水果分級設計Matlab
- 基於ATmega8的測速計設計
- 基於 Laravel5.5 和 layui 包含基礎 RBAC 許可權的管理後臺LaravelUI
- SpringCloud微服務實戰——搭建企業級開發框架(二十一):基於RBAC模型的系統許可權設計SpringGCCloud微服務框架模型
- 【解構雲原生】K8s 的 RBAC - 基於角色的訪問控制K8S
- vue基於d2-admin的RBAC許可權管理解決方案Vue
- 聊聊基於敏捷的度量指標設計敏捷指標
- 基於原型的遊戲角色設計方法原型遊戲
- 基於promise的阻塞式佇列設計Promise佇列