首先看若依文档
一般情况下,
ruoyi-system是储存后台代码的,
ruoyi-ui是储存前端代码的
1.拉取代码
2.若依的结构
3.运行SQL脚本
sql文件夹中是有两个sql脚本的,这两个脚本都是若依开源项目的必须脚本,需要运行在你自己 的数据库中,如果报错就交换一下两个脚本的运行顺序即可。
//在运行完两个脚本之后只需要修改若依一下配置即可运行了。 在数据库中生成数据。
4.修改配置文件
1.application-druid.yml
# 主库数据源
master:
url: jdbc:mysql://localhost:3306/medical?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password:
修改application-druid.yml文件,数据库的连接。填写好自己的账号名及密码并将修改数据库的库名。
2.application.yml:
看一下主配置文件
这个文件是若依框架的主配置文件 ,主要有一下相关配置:
①ruoyi:这里是关于你这个项目的基本信息,里面有一个是验证码的形式(主要有数字个字符两种形式,可以自行选择,当然如果你不想要验证码也可以去数据库中找到sys_config这个配置表将其关闭如下图所示👇)
②server:这里是开发环境的设置,修改后台端口号就是在这个地方,一般情况下也不需要动这个地方除非默认的8080端口被占用了
③logging:这里是日志的显示形式,默认是debug的形式
④user:用户配置
⑤spring:里面有一个redis是需要修改地址和密码的,端口号一般情况下是默认的,redis这里有两种使用方式,一个是远程的,一个是本地的,这里建议是使用本地的,因为远程的服务不稳定需要考虑网络因素,有时就是因为一个redis项目卡在那就是因为这个原因,这里值得一提的是安装redis的时候不要装错了,比如说我的就是Windows的,就装Windows就行了,下面是redis官网。
⑥token:令牌的配置
⑦pagehelper:分页插件的配置
⑧swagger:swagger框架的配置
⑨xss:防止跨站脚本攻击的配置
6.启动Redis
7.安装node.js
安装node.js。需要安装node.js才能运行。
8.运行前台服务
npm run dev 启动前台服务
1.在ruoyi-ui模板下打开命令指示符
# 进入项目目录
cd ruoyi-ui
# 安装依赖
npm install
# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npmmirror.com
# 启动服务
npm run dev
```
运行时候出错,这个是版本问题。安装
1.安装nvm管理工具(先关掉360等软件,不然会弹出警告!)
1.从官网下载安装包: https://github.com/coreybutler/nvm-windows/releases,下载:nvm-setup.exe
安装成功后,输入命令行nvm use node版本号(nvm use 16.17.0)
验证是否成功
分别输入命令行node -v和npm -v,检验node.js以及对应npm是否安装成功,如果可以显示版本号这说明安装成功。
再次运行npm run dev。成功。
9.启动后端服务
即启动 ruoyi-admin\src\main\java\com\ruoyi\RuoYiApplication.java,启动类。或者打包运行。
-
- 启动方式:即启动 ruoyi-admin\src\main\java\com\ruoyi\RuoYiApplication.java,启动类
- 打包方式:
- 打包工程文件
在ruoyi项目的bin目录下执行package.bat打包Web工程,生成war/jar包文件。
然后会在项目下生成target文件夹包含war或jar
提示
多模块版本会生成在ruoyi/ruoyi-admin模块下target文件夹
- 部署工程文件
1、jar部署方式
使用命令行执行:java –jar ruoyi.jar 或者执行脚本:ruoyi/bin/run.bat
2、war部署方式
ruoyi/pom.xml中的packaging修改为war,放入tomcat服务器webapps
打包时出现问题
修改D:\Maven\apache-maven-3.6.1\bin\mvn.cmd,这个文件
在第一行添加:set JAVA_HOME=D:\develop\java\jdk8\jre(注意:此处为你的jdk文件中jre文件夹的路径!)
运行时出错
ruoyi默认的端口8080被占用,修改前后端端口号(关闭启动类就行了,一般是启动类占用了端口,IDEA中关闭启动类)
1.前端ruoyi-ui
打开文件vue.config.js,找到 [process.env.VUE_APP_BASE_API] ,改target中localhost后的端口号(端口号随意,我这里用的1998)
2.后端RuoYi-Vue-master
(1)打开文件application.yml,路径:ruoyi-admin -> application.yml
找到开发环境配置,在server下的port更改端口号,如图
输入端口号
上图这个问题是因为访问的后端端口,前端端口为80,前端的服务没有启动(在ruoyi-ui下cmd运行npm run dev 启动前台服务)
10.node是什么
Node.js是一个javascript运行环境。它让javascript可以开发后端程序,实现几乎其他后端语言实现的所有功能,可以与PHP、Java、Python、.NET、Ruby等后端语言平起平坐。
Nodejs是基于V8引擎,V8是Google发布的开源JavaScript引擎,本身就是用于Chrome浏览器的js解释部分,但是Ryan Dahl 这哥们,鬼才般的,把这个V8搬到了服务器上,用于做服务器的软件。
11.权限表达式
SpringSecurity(十一): 权限表达式
1、Spring Security 允许我们使用 Spring EL 表达式,来进行用户权限的控制,如果对应的表达式结果返回true,则表示拥有对应的权限,反之则无。
Spring Security 可用表达式对象的基类是SecurityExpressionRoot
表达式 | 描述 |
permitAll() | 总是返回true,表示允许所有访问(认证不认证都可访问 URL或方法 ) |
denyAll() | 总是返回false,表示拒绝所有访问(永远访问不到指定的 URL或方法 ) |
isAnonymous() | 当前用户是一个匿名用户(未登录用户)允许访问,返回true |
isRememberMe() | 当前用户是通过Remember-Me自动登录的允许访问,返回true |
isAuthenticated() | 当前用户是已经登录认证成功的允许访问(包含了rememberMe自动 登录的),返回true |
isFullyAuthenticated() | 如果当前用户既不是一个匿名用户,同时也不是通过Remember-Me自 动登录的,则允许访问(可以理解为通过页面输入帐户信息认证的)。 |
hasRole(String role) | 当前用户拥有指定角色权限的允许访问,返回true。注意: 指定的角色名(如: ADMIN ) SpringSecurity 底层会在前面拼接 ROLE_ 字符串,所以在UserDetailsService实现类,数据库返回的角色名要有ROLE_ADMIN |
hasAnyRole([role1, role2]) | 多个角色以逗号分隔的字符串。如果当前用户拥有指定角色中的任意一个则允许访问,返回true。 |
hasAuthority(String authority) | 当前用户拥有指定权限标识的允许访问,返回true。注意:和 hasRole 区别是, hasAuthority 不会在前面拼接 ROLE_ 字符串, 。 |
hasAnyAuthority([auth1,auth2]) | 多个权限标识是以逗号分隔的字符串。如果当前用户拥有指定权限标识中的任意一个则允许访问,返回true |
hasIpAddress("192.168.1.1/29") | 限制指定IP或指定范围内的IP才可以访问 |
2、表达式控制URL权限
a、拥有 sys:user 权限的用户,可以访问任意请求方式的 /user
.antMatchers("/user").hasAuthority("sys:user")
b、拥有 sys:role 权限的用户,可以访问 get 请求方式的 /role
.antMatchers(HttpMethod.GET, "/role").hasAuthority("sys:role")
c、 如果想同时满足多个表达式权限,要使用 access 方法来指定表达式
如:拥有 sys:permission 权限或 ADMIN 角色,可以访问 get 请求
.antMatchers(HttpMethod.GET, "/permission").access("hasAuthority('sys:permission') or hasAnyRole('ADMIN')") //角色会加上前缀 ROLE_,即真实是 ROLE_ADMIN
这段代码看起来是使用了Spring Security中的@PreAuthorize注解,该注解通常用于方法级别的访问控制。具体来说,这段代码表明了一个方法或者类中的某个方法需要用户在执行之前满足特定的权限。
分解一下这段代码:
@PreAuthorize(“@ss.hasPermi(‘system:user:list’)”)
@PreAuthorize注解表示在方法执行之前进行权限验证。
"@ss.hasPermi('system:user:list')"是权限表达式,它指定了所需的权限。这里的权限表达式看起来是Spring Security中自定义的,可能涉及到系统用户列表的权限。
猜测的作用是,只有具有'system:user:list'权限的
12.字典管理
点击sys_user_sex点进来如下图: