本文采用
Sa-Token
框架实现权限控制。
官方文档:https://sa-token.cc/doc.html#/
权限校验指的是校验用户是否拥有访问某个 API
的能力。
通常情况下,一个 API
对应一个权限码,如果用户具备当前 API
的权限码,即代表有能力访问该 API
。
在本系统中,每一个菜单功能都有对应的权限标识,可以在菜单管理中进行设置。
注:
前后端的权限标识要保持一致。
权限标识可以使用通配符*
。
输入图片说明
@SaCheckPermission
注解是由 Sa-Token
框架提供的角色校验注解,可以标注在方法上或类上。
@SaCheckPermission("system:user:list")
@SaCheckPermission(
value = {
"system:user:list",
"system:user:query"
},
mode = SaMode.OR
)
@SaCheckPermission(
value = {
"system:user:list",
"system:user:query"
},
mode = SaMode.AND
)
StpUtil
工具类是由 Sa-Token
框架提供的权限工具类,提供了常用的校验方法。
StpUtil.hasPermission("system:user:list");
StpUtil.checkPermission("system:user:list");
如果验证未通过,则抛出异常: NotPermissionException
StpUtil.checkPermissionOr("system:user:list", "system:user:query");
如果验证未通过,则抛出异常: NotPermissionException
StpUtil.checkPermissionAnd("system:user:list", "system:user:query");
如果验证未通过,则抛出异常: NotPermissionException
角色校验指的是校验用户是否拥有某个指定角色。
在本系统中,每个角色都拥有唯一的权限字符。
除了超级管理员角色外,其他角色的权限字符可以通过角色管理进行设置。
@SaCheckRole
注解是由 Sa-Token
框架提供的角色校验注解,可以标注在方法上或类上。
@SaCheckRole("superadmin")
@SaCheckRole(
value = {
"superadmin",
"admin"
},
mode = SaMode.OR
)
@SaCheckRole(
value = {
"superadmin",
"admin"
},
mode = SaMode.AND
)
StpUtil
工具类校验StpUtil
工具类是由 Sa-Token
框架提供的权限工具类,提供了常用的校验方法。
StpUtil.hasRole("superadmin")
StpUtil.checkRole("system:user:list");
如果验证未通过,则抛出异常: NotRoleException
StpUtil.checkRoleOr("system:user:list", "system:user:query");
如果验证未通过,则抛出异常: NotRoleException
StpUtil.checkRoleAnd("system:user:list", "system:user:query");
如果验证未通过,则抛出异常: NotRoleException
除了分开校验以外,权限和角色也可以进行组合,表示备选校验。
简单举个例子:
假设某个 API 的权限码为 system:user:list
,角色 admi
可以调用,则可以这样写:
@SaCheckPermission(value = "system:user:list", orRole = "admin")
本系统中实现了 StpInterface
接口,可以对用户的权限以及角色进行管理,并且可以根据不同的用户类型进行设置。
具体参考类:
org.dromara.common.satoken.core.service.SaPermissionImpl
powered by kaifamiao