开发喵星球

若依权限管理详解(284)

若依(RuoYi)是一款基于Spring BootVue.js开发的快速开发平台,它的权限管理是通过`RBAC(Role-based Access Control 基于角色的访问控制)模型来设计的。

RBAC模型将权限控制分为角色管理权限管理两个部分。在若依中,角色是指对系统的一类用户或操作者的定义,而权限是指对系统中某个资源或操作的访问控制。

具体来说,在若依中,权限管理包括以下几个方面:

  1. 菜单管理:通过对系统菜单进行管理,可以控制用户在系统中能够访问的页面和功能。

  2. 按钮权限:在系统中,某些操作需要特定的权限才能进行,例如删除、修改等操作。通过对按钮权限的控制,可以限制用户对系统的访问和操作。

  3. 数据权限:在某些情况下,需要根据用户的角色或部门来限制其对数据的访问。通过数据权限的设置,可以实现对数据的细粒度控制。

  4. API接口权限:在若依中,API也可以通过权限的方式进行控制。通过对API的权限进行管理,可以限制用户对API的访问和使用。

1. 菜单管理

拥有不同权限的用户登录系统之后看到的菜单是不一样的。(新建菜单、用户分配菜单权限即可)

1. 菜单分类

2. 权限标识

system:user:query

通常由 M:C:F 组成,代表了一个权限最小的标识为,达到了按钮级别,这也是权限可以控制到接口(按钮)的根本。

表面上来说这个只是字符串,前后端都会做字符串的解析,前端用于控制按钮的是否可以点击,后端用于控制接口是否可以调用。

2.按钮权限

新增、删除、查看、修改等按钮,当前用户是否能用
两种用法:

1. 正常用法
v-hasPermi="['system:role:add']"

1. 特别用法 
v-if="checkPermi(['system:role:add'])" //适用于不适合直接干掉标签的地方

🌰:

<el-button
          type="primary"
          plain
          icon="el-icon-plus"
          size="mini"
          @click="handleAdd"
          v-if="checkPermi(['system:role:add'])"  这里就是按钮权限  
        >新增</el-button>

<div v-else>没有新增权限</div>

<el-button
          type="success"
          plain
          icon="el-icon-edit"
          size="mini"
          :disabled="single"
          @click="handleUpdate"
          v-hasPermi="['system:role:edit']"
        >修改</el-button>

3. 接口权限

接口权限和前端的按钮权限一一对应。为的是防止用户绕过按钮直接请求后端接口获取数据。在若依Vue系统中,是使用SpringSecurity的注解@PreAuthorize实现的。将@PreAuthorize 标注在每个方法上。
权限有两种添加方式

// 属于user角色,相当于user这个角色可以访问该注解修饰的方法
@PreAuthorize(hasRole = "user")

// 符合system:user:list权限要求,相当于菜单标识加了这个字段的才能访问
@PreAuthorize(hasPermi = "system:user:list")

@ss代表的是PermissionService服务,对每个接口拦截并调用PermissionService的对应方法判断接口调用者的权限

4. 数据权限

数据权限实现的关键在于com.ruoyi.framework.aspectj.DataScopeAspect类。该类是一个切面类,凡是加上com.ruoyi.common.annotation.DataScope注解的方法,在执行的时候都会被它拦截。

该切面的核心逻辑是“拼SQL”,方法执行之前,会给参数的一个params属性添加一个dataScope键值对,key为”dataScope“,值为AND (" + sqlString.substring(4) + ")"样式的一段SQL,这段SQL会根据当前用户所在的部门以及当前用户角色的权限范围发生变化。

简单来说,这段代码的逻辑就是用户所在的部门权限越高,数据权限范围越大,查出来的结果集将会越大。

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-07-30 11:14:59 阅读量:206
<<   >>


powered by kaifamiao