开发喵星球

RuoYi-Vue-Plus 权限控制(319)

本文采用 Sa-Token 框架实现权限控制。
官方文档:https://sa-token.cc/doc.html#/

权限校验

权限校验指的是校验用户是否拥有访问某个 API 的能力。

通常情况下,一个 API 对应一个权限码,如果用户具备当前 API 的权限码,即代表有能力访问该 API

1:权限标识

在本系统中,每一个菜单功能都有对应的权限标识,可以在菜单管理中进行设置。

注:

前后端的权限标识要保持一致。
权限标识可以使用通配符*
输入图片说明

2:校验方法

2.1:使用 @SaCheckPermission 注解进行校验

@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
)
2.2:使用 StpUtil 工具类校验

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

角色校验

角色校验指的是校验用户是否拥有某个指定角色。

1:权限标识

在本系统中,每个角色都拥有唯一的权限字符。

除了超级管理员角色外,其他角色的权限字符可以通过角色管理进行设置。

2:校验方法

2.1:使用 @SaCheckRole 注解校验

@SaCheckRole 注解是由 Sa-Token 框架提供的角色校验注解,可以标注在方法上或类上。

@SaCheckRole("superadmin")
@SaCheckRole(
    value = {
        "superadmin", 
        "admin"
    }, 
    mode = SaMode.OR
)
@SaCheckRole(
    value = {
        "superadmin", 
        "admin"
    }, 
    mode = SaMode.AND
)
2.2:使用 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

角色权限双重 OR 校验

除了分开校验以外,权限和角色也可以进行组合,表示备选校验。

简单举个例子:

假设某个 API 的权限码为 system:user:list,角色 admi 可以调用,则可以这样写:

@SaCheckPermission(value = "system:user:list", orRole = "admin")

当前用户的所有权限

本系统中实现了 StpInterface 接口,可以对用户的权限以及角色进行管理,并且可以根据不同的用户类型进行设置。

具体参考类:

org.dromara.common.satoken.core.service.SaPermissionImpl
   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-09-03 11:15:03 阅读量:196
<<   >>


powered by kaifamiao