RBAC权限控制
Last updated
Last updated
hsweb提供了常规的RBAC权限控制,默认基于AOP实现。hsweb-authorization-api
模块中定义了权限相关接口,核心类:
Authentication
: 用户的所有权限相关信息。
AuthenticationManager
:用于管理用户的权限信息已经授权。
AuthenticationSupplier
: 用于获取当前登录用户和指定用户的权限,可通过实现此接口来自定义权限获取方式。
在需要进行权限控制的Controller
中注解@Authorize
以声明此接口需要控制权限。
属性列表:
属性名 | 说明 |
permission | 权限标识,如: user-manager |
action | 操作,如: add |
role | 角色ID,如: admin |
user | 用户名,如: admin |
logical | 存在多个声明时使用的策略: AND: 并且 OR: 或者 |
phased | 验证时机: before: 在请求之前 after: 在请求之后 |
ignore | 忽略权限控制 |
description | 权限说明 |
dataAccess | 数据权限声明 |
注意:
在类上注解时,表示此类的所有接口都需要进行权限控制。
方法和类上的注解默认将合并处理,如:类注解@Authorize(permission="user-manager")
,方法注解 @Authorize(action="add")
,在权限控制时会合并为@Authorize(permission="user-manager",action="add")
在注解方式进行声明时,可能不能完全满足需求,比如要修改已经打了包的模块的权限控制声明。
实现接口: AopMethodAuthorizeDefinitionCustomizerParser
,实现parse
方法,返回 AuthorizeDefinition
.即可。AuthorizeDefinition
的属性和Authorize
注解基本一致,具体查看源代码即可。
如果返回EmptyAuthorizeDefinition
则表示不进行权限控制,如果返回null
则表示使用默认的权限定义。
在进行权限控制时,会触发事件:AuthorizingHandleBeforeEvent
,可通过监听此事件,来实现自定义的权限控制。例如:
通过配置文件设置不进行权限控制的接口