简介

若依是一个基于SpringBoot,Shiro,Mybatis的权限后台管理系统

官网文档:介绍 | RuoYi

源码

  1. 前后端不分离 RuoYi: 🎉 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用
  2. 前后端分离 RuoYi-Vue: 🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本
  3. 微服务 RuoYi-Cloud: 🎉 基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统,同时提供了 Vue3 的版本

使用步骤

  1. 首先从git上拉取代码
git clone https://gitee.com/y_project/RuoYi-Vue
  1. 用idea打开项目,配置数据库
  2. 配置redis
# redis 配置
redis:
# 地址
host: localhost
# 端口,默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password: root
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
  1. 运行前端,在ruoyi-ui目录下执行两行命令
# 安装依赖
npm install

# 启动服务
npm run dev
  1. 如果报这个错误
error:03000086:digital envelope routines::initialization error

执行这个命令

set NODE_OPTIONS=--openssl-legacy-provider

参考文档

若依微服务版本实现三方登录 若依框架登录_前后端分离

  1. 运行起来以后,前端页面会自动打开
  2. 登录系统
#用户名
admin

#密码
admin123

代码生成器

  1. 首先创建表结构
  2. 导入表结构
  3. 点击生成按钮,生成前后端代码和sql文件
  4. 将sql文件导入到menu菜单表中,根据场景修改其parent_id,同时将前后端代码分别根据路径CV到项目中
  5. 当后端项目返回的数据都是数据,而页面显示需要中文,这个时候就需要使用formater来转换

若依微服务版本实现三方登录 若依框架登录_连接池_02

  1. 重启项目  

权限控制

  1. 若依的权限控制是标准的基于角色的RBAC(Role Based Access Controll)权限控制

若依微服务版本实现三方登录 若依框架登录_spring cloud_03

  1. 使用的时候在controller的接口上添加以下注解即可
  1. @RequiresRoles("admin")
  2. @RequiresPermissions
  1. 常用的权限管理框架
  1. Shiro(前后端不分离版本):更简单
  2. SpringSecurity(前后端分离vue版本):稍微复杂一些
  1. 若依的权限校验
  1. 前后端不分离版本的shiro:
  1. 用户登录的时候,首先是到shiro的过滤器com.ruoyi.framework.shiro.web.filter.captcha.CaptchaValidateFilter去验证验证码
  2. 然后shiro框架会回调com.ruoyi.framework.shiro.realm.UserRealm里面的doGetAuthenticationInfo()方法做登录,登录的时候校验用户名密码做登录
  3. 然后shiro框架会回调com.ruoyi.framework.shiro.realm.UserRealm里面的doGetAuthorizationInfo()方法去获取用户的角色和权限
  4. shiro会做aop,检验权限信息
  1. 前后端分离vue版本
  1. SpringSecurity的主配置文件:com.ruoyi.framework.config.SecurityConfig
  2. 获取用户的权限信息:com.ruoyi.framework.web.service.UserDetailsServiceImpl#loadUserByUsername()
  3. 登录接口:com.ruoyi.web.controller.system.SysLoginController#login()
  1. 查询权限的底层sql

操作日志

  1. 记录用户的操作日志
  1. 在业务方法上添加注解@com.ruoyi.common.annotation.Log
  1. 背后是AOP com.ruoyi.framework.aspectj.LogAspect
  1. @Before : 记录业务的开始时间
  2. @AfterReturn、@AfterThrowing:记录详细的操作日志
  3. 异步写到数据库

多数据

若依微服务版本实现三方登录 若依框架登录_连接池_04

  1. 首先把系统中所有的数据源都加载起来com.ruoyi.framework.config.DruidConfig,存放到一个动态数据源com.ruoyi.framework.datasource.DynamicDataSource中
  2. AOP拦截业务方法上的@DataSource参数,拿到执行业务方法要使用的数据源的名称,设置到ThreadLocal中。
  3. spring框架会回调实现了AbstractRoutingDataSource抽象类的determineCurrentLookupKey()方法来决定访问方法的时候使用哪一个数据源,只需要在这个回调方法中返回@DataSource注解中的数据源的名称即可。

定时任务