目录

一、若依是什么

二、 为什么使用若依

 三、运行若依框架

四、若依的权限系统

1、菜单权限

(1)创建菜单

(2)创建角色分配权限

(3)创建用户

 2、按钮权限

 3、接口权限

4、数据权限

 四、其他系统管理

 1、字典管理

(1)添加字典类型

(2)字典数值插入


一、若依是什么

        若依(RuoYi)是一款基于 Spring Boot、Spring Security、MyBatis-plus、Vue、Element-UI 的快速开发平台,是一个全功能权限系统,采用前后端分离的方式进行开发。若依包含了许多常用的功能,例如用户管理、角色管理、菜单管理、部门管理、字典管理、定时任务等等,还提供了代码生成器、日志管理、在线用户管理等扩展功能,可以快速搭建企业级应用。

二、 为什么使用若依

  1. 基于Spring Boot:若依基于Spring Boot框架,使用了Spring Boot的自动配置和约定大于配置的思想,简化了项目配置和开发流程,降低了开发成本。
  2. 可视化代码生成:若依提供了基于MyBatis Plus和Beetl的代码生成器,能够根据数据库表结构自动生成实体类、Mapper接口、Service和Controller等代码,提高了开发效率和代码质量。
  3. 丰富的组件和插件:若依集成了许多流行的开源组件和插件,如Swagger、Quartz、Shiro、Redis、Elasticsearch等,可以快速集成这些组件,并且支持自定义扩展。
  4. 前后端分离:若依支持前后端分离开发,提供了前端代码生成器和前端框架Vue、React、Angular等集成,支持多种前端框架。
  5. 安全性:若依集成了Spring Security和Shiro等安全框架,提供了全面的安全控制和认证授权功能,可以保证应用程序的安全性。

        综合以上几个方面的优势,若依能够快速搭建起一套高效、安全、易维护的企业级应用程序,符合现代化企业的开发需求。

 下图是若依框架有的功能:

 三、运行若依框架

        使用Git从https://gitee.com/y_project/RuoYi-Vue克隆下源码,用idea打开

 

        根据配置文件application-druid.yml创建一个叫ry-vue的数据库,或者将ry-vue改成你创建数据库的名字。运行sql文件夹下的两个sql文件。

 启动自己的Redis,将配置文件application.yml中的Redis改成自己的。

然后找到RuoYiApplication启动后端代码。

在下面找到Terminal,先进入ruoyi-ui文件夹,然后启动前端代码npm run dev。

若是第一次启动,先npm install下载资源。

四、若依的权限系统

若依的权限系统大约分为一下几种:

  1. 菜单权限:用户登录系统后能看到那些菜单。
  2. 按钮权限:用户在一个页面上能看到哪些按钮,比如新增、删除等。
  3. 接口权限:用户带着认证信息请求后端接口,是否有权限访问,该接口与前端页面上的按钮一一对应。
  4. 数据权限:用户有权限访问后端某个接口,但是不同的用户相同的接口相同的入参,根据权限大小不同,返回的结果应当不一样——权限大的能够看到的数据更多。

1、菜单权限

先创建菜单,然后给用户分配权限

(1)创建菜单

上级菜单:其实就是父级菜单,对应数据库表字段中的parent_id,如果没有父级菜单就默认为0

菜单名称:显示在左侧的菜单名

显示排序:自上而下显示的顺序

路由地址:点击此菜单或者此目录跳转的路径(根据自己的需要来,不要乱来)

是否外链:是否需要跳转至http(s)下的路由地址,一般情况下不需要选,除非你真的想要跳转外站地址(根据自己的需要来)

显示状态:隐藏就是不会显示菜单在左侧,但是任然可以跳转菜单及菜单下的路由地址

菜单状态:这里的状态禁用了除了不会显示在左侧菜单之外,还不能跳转到该菜单及菜单下的路由地址

 组件路径:前端代码中组件存放的地址,即在ruoyi-ui下src目录下的view文件下的地址(注意:如果指定路径与实际路径不相符,就会报404错误)

权限字符:控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasPermi('system:user:list')`)这里的权限字符可以定义在菜单上也能定义在按钮上用来细化权限

路由参数:访问路由时需要携带的参数,这里需要注意是,需要写成对象并以键值对的形式保存,如{name:"zs",sex:"男"}

是否缓存:这里需要注意的是开启缓存的前提是组件的“name”必须与路由保持一致,因为若依是使用vue的一个抽象组件库keep-alive来处理缓存的

 刷新前端页面后,在左侧导航栏就会显示。

(2)创建角色分配权限

在菜单权限那里只选择员工管理菜单。

(3)创建用户

 登录新建的用户,然后在菜单栏只可以看到员工管理菜单。

 2、按钮权限

        新增按钮与新增菜单差不多,但是不建议在此处新增按钮,因为在代码生成时,所有的按钮都自动生成了。

        而按钮权限修改与菜单权限相似,在角色那里将有的权限按钮选中,没有权限的按钮取消选中。

取消了删除按钮权限,在该角色的用户的员工管理界面,删除按钮就没有了。

 

 3、接口权限

        接口权限和前端的按钮权限一一对应。为的是防止用户绕过按钮直接请求后端接口获取数据。在若依Vue系统中,是使用SpringSecurity的注解@PreAuthorize实现的。

4、数据权限

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

         该切面定义了五种权限范围

Name

code

desc

DATA_SCOPE_ALL

1

全部数据权限

DATA_SCOPE_CUSTOM

2

自定数据权限

DATA_SCOPE_DEPT

3

部门数据权限

DATA_SCOPE_DEPT_AND_CHILD

4

部门及以下数据权限

DATA_SCOPE_SELF

5

仅本人数据权限

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

 四、其他系统管理

 1、字典管理

(1)添加字典类型

字典名称:其实就是这个字典的标签,如用户性别

字典类型:这里需要注意的是在定义类型的时候不能乱来,这里定义的类型不能与已经有的类型重复,否则会报冲突异常,并且在定义类型的时候要有一定的规范,如果你不想定义的太复杂,这里建议使用(表名+字段) ,如用户性别sys_user表中的性别sex,写成sys_user_sex就行了

(2)字典数值插入

点击要插入的字典类型,然后点击新增按钮

 

 数据标签:显示出来内容,如用户性别中的“男”

数据键值:保存在数据库中的int值,如1

排序顺序:显示的先后顺序

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐