简单上手若依框架

简介

  1. 若依是一个基于SpringBoot,Shiro,Mybatis的权限后台管理系统
  2. 官网文档:介绍 | RuoYi
  3. 源码
    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

参考文档

https://blog.csdn.net/qq_21271511/article/details/127996193

  1. 运行起来以后,前端页面会自动打开

  2. 登录系统
#用户名
admin#密码
admin123

代码生成器

  1. 首先创建表结构

  2. 导入表结构

  3. 点击生成按钮,生成前后端代码和sql文件

  4. 将sql文件导入到menu菜单表中,根据场景修改其parent_id,同时将前后端代码分别根据路径CV到项目中
  5. 当后端项目返回的数据都是数据,而页面显示需要中文,这个时候就需要使用formater来转换

  6. 重启项目
     

权限控制

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

  2. 使用的时候在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. 异步写到数据库

多数据

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

定时任务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

InfluxDB的常用数据操作

1.插入语句 # INSERT语句用于向数据库中插入数据点(数据行)。 # 这些数据点包含时间戳、测量(measurement)、标签(tags)和字段(fields)等信息。 # 以下是INSERT语句的基本语法 INSE…

C++面试:内存溢出、内存泄漏的原因与解决

目录 内存溢出(Memory Overflow) 内存溢出介绍 解决内存溢出问题的方法 内存泄漏(Memory Leak) 内存泄露基础 解决内存泄漏问题的方法 内存溢出(Memory Overflow) 内存溢出介绍 内存溢出是指程序在执…

第6.4章:StarRocks查询加速——Colocation Join

目录 一、StarRocks数据划分 1.1 分区 1.2 分桶 二、Colocation Join实现原理 2.1 Colocate Join概述 2.2 Colocate Join实现原理 三、应用案例 注:本篇文章阐述的是StarRocks-3.2版本的Colocation Join 官网文章地址: Colocate Join | StarRoc…

Rust所有权--与go对比学

如何拿返回值,如何不传递所有权就更改原值?如果想操作更改元变量要怎么做呢? 分别执行以下go代码: func main() {var a 10//calc1(a)//a calc_return(a)calc2(&a)a 100calc3(&a)fmt.Println(a) } func calc1(num int…

SQL Server 连接池相关内容

查看最大连接数 SELECT MAX_CONNECTIONS查看指定数据库的连接数 SELECT * FROM master.dbo.sysprocesses WHERE dbid IN ( SELECT dbid FROM master.dbo.sysdatabases WHERE NAMEDB_WMS_KZJ )获取当前SQL服务器所有的连接详细信息 SELECT * FROM sysprocesses获取自上次启动…

五大方法教你如何分分钟构造百万测试数据!

在测试的工作过程中,很多场景是需要构造一些数据在项目里的,方便测试工作的进行,构造的方法有很多,难度和技术深度也不一样。本文提供方法供你选择。 在测试的工作过程中,很多场景是需要构造一些数据在项目里的&#…

Centos服务器部署前后端项目

目录 准备工作1. 准备传输软件2. 连接服务器 部署Mysql1.下载Mysql(Linux版本)2. 解压3. 修改配置4. 启动服务另一种方法Docker 部署后端1. 在项目根目录中创建Dockerfile文件写入2. 启动 部署前端1. 在项目根目录中创建Dockerfile文件写入2. 启动 准备工作 1. 准备传输软件 …

全网唯一基于共享内存的C++ RPC框架

首先声明:我不是标题党,我是在找遍全网,没有找到一个基于共享内存实现、开源且跨平台的C RPC框架之后,才着手开发的这个框架。 项目地址:https://github.com/winsoft666/veigar 1. Veigar Veigar一词来源于英雄联盟里…

Nacos服务发现及其其他工具

1、什么是Nacos的服务发现功能 在微服务架构中,服务发现功能允许服务提供者(服务实例)将自己注册到Nacos服务器,同时服务消费者(客户端)能够通过Nacos服务器发现可用的服务实例。这样,服务消费…

2024年湖北省事业单位考试报名流程图解

⏰ 时间安排 ✔️ 注册:2024年2月19日至2月27日15:00 ✔️ 报名:2024年2月21日9:00至2月27日17:00 ✔️ 资格审查:2024年2月21日9:00至2月28日9:00 ✔️ 缴费确认:2024年2月28日9:00至3月1日24:00 ✔️ 岗位调整和改报&#…

数据结构与算法:图形数据结构

1. 图的基本概念和表示方法 图是一种由节点和边组成的非线性数据结构,用于描述事物之间的关系。在计算机科学中,图是一种十分重要的数据结构,广泛应用于各种领域,如网络分析、路径规划等。本节将介绍图的基本概念和两种常见的表示…

C++知识点总结(22):模拟算法

一、概念 模拟算法 根据题目描述进行筛选提取关键要素,按需求书写代码解决实际问题的算法。 二、步骤 1、提取题目的关键要素 2、根据关键要素的需求完成代码 三、关键要素 1、题目目的 2、样例的执行逻辑(样例分析) 3、数据范围(…

上门服务系统|上门服务小程序|上门服务软件开发

随着移动互联网技术的普及,上门服务小程序系统成为现代企业数字化转型的关键一环。这一系统为消费者提供了更加便捷、高效以及个性化的服务体验,同时也为企业带来了更广阔的商业机会。让我们来看看上门服务小程序系统的优势和功能。 首先,上门…

vue3新特性-defineOptions和defineModel

defineOptions 背景说明&#xff1a; 有 <script setup> 之前&#xff0c;如果要定义 props, emits 可以轻而易举地添加一个与 setup 平级的属性。 但是用了 <script setup> 后&#xff0c;就没法这么干了 setup 属性已经没有了&#xff0c;自然无法添加与其平…

Docker基础篇(二)

docker run -d docker run -d 容器名或容器ID docker run -d 后台生成容器&#xff0c;并退出容器&#xff08;除容器中在运行脚本&#xff09; docker run -it 交互生成容器 docker run -d centos /bin/sh -c “while true; do echo zen; sleep 2;done” 查看容器中的进程…

【进程创建】

目录 进程创建的方式查看进程pid 调用系统调用创建子进程fock函数做了的工作子进程刚开始创建的状态 一个变量&#xff0c;两个不同的值创建子进程的作用 进程创建的方式 1.在操作系统上输入的指令。 2.已经启动的软件。 3.程序员在代码层面上调用系统调用创建进程。 linux中第…

服务器被黑该如何查找入侵痕迹以及如何防御攻击

当公司的网站服务器被黑&#xff0c;被入侵导致整个网站&#xff0c;以及业务系统瘫痪&#xff0c;给企业带来的损失无法估量&#xff0c;但是当发生服务器被攻击的情况&#xff0c;作为服务器的维护人员应当在第一时间做好安全响应&#xff0c;对服务器以及网站应以最快的时间…

【Java程序设计】【C00287】基于Springboot的疫情防控期间某村外出务工人员管理系统(有论文)

基于Springboot的疫情防控期间某村外出务工人员管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的疫情防控期间某村外出务工人员信息管理系统 本系统分为系统功能模块、管理员功能模块、用户功能模块、采集…

git 获取仓库代码与提交代码

1. 建文件夹&#xff0c;获取项目的完整代码 2.Git安装 打开安装程序后&#xff0c;一直点击下一步&#xff0c;直到以下位置&#xff1a; 此处代表使用VIM作为Git默认的编辑器。继续下一步&#xff0c;直到: 这里选择第一项&#xff0c;即仅仅在Bash中使用Git。如果有Linux的学…

面了 360、腾讯和百度的 NLP 算法岗,被问麻了。。。。。

文章目录 技术交流群1、360 NLP 算法岗2、腾讯 NLP 算法岗3、百度 NLP 算法岗用通俗易懂方式讲解系列 节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂同学、参加社招和校招面试的同学&#xff0c;针对大模型技术趋势、大模型落地项…