若依cloud前后端分离版本详解
一、项目构建流程:
下载对应若依代码:https://gitee.com/y_project/RuoYi-Cloud?_from=gitee_search
下载nacos,配置nacos
运行脚本文件
项目里有脚本文件
③启动nacos
startup.cmd -m standalone (需要配置jdk环境变量)
http://localhost:8848/nacos 账号密码 nacos ④修改nacos配置文件
3.下载seata
配置seata
启动seate
4.启动后端各模块服务
顺序:
5.启动前端服务
动态代理的网关配置
## 开发 ```bash # 克隆项目 git clone https://gitee.com/y_project/RuoYi-Vue # 进入项目目录 cd ruoyi-ui # 安装依赖 npm install #-- (以下备用) --# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 # 启动服务 npm run dev ``` 浏览器访问 http://localhost:80 ## 发布 ```bash # 构建测试环境 npm run build:stage # 构建生产环境 npm run build:prod ``` 二、项目解析1. 验证码
spring函数式编程WebFlux:
由gateway网关处理/code这个请求,将它路由到validateCodeHandler这个处理器去处理,把请求路由到对应的handler去处理。
这个ValidateCodeHandler主要作用就是验证码的获取:
最后调用createCaptcha这个方法生成验证码:
setCacheObject:
调用该方法想redis中储存值,key为前缀加生成的uuid,value是验证码的答案,并且设置超时时间2分钟。
通过ImageIO将它转化为二进制写进流里面,最后将这个img转成Base64的编码通过Ajax返回给前端。 2. 登录
login方法:
通过该方法拿到用户的用户名、密码。
通过拿到的用户名、密码,先去验证是否为空及是否在一定范围内。
remoteUserService查询用户的信息:通过Feign调用ruoyi-system模块的getUserInfo方法。
记录用户登录的一些操作日志和获取当前的登录用户。
createToken方法:获取登录token
先生成token,uuid、用户id、用户名、ip地址,赋予token一个前缀名称,随后存入redis,key为带前缀的token,value为登录用户,并设置过期时间,最后将token返回给前端。 3. 前端路由守卫
去前端模块全局搜/getinfo:
再搜getInfo()这个方法:
搜GetInfo:
router.beforEach(路由守卫):
前端每次路由的时候都会执行,类似于拦截器,路由之前做什么,路由之后做什么。
如果能拿到token,说明已经登录,但是你还想去/login登录页面,则将页面转到首页。
如果不是去登录页面,则判断当前用户是否已拉取完user_info信息,根据roles权限生成可访问的路由表,动态添加可访问路由表。
如果没有token:
查看去往路径是否在白名单内,如果在白名单,不需要登录直接前往,否则重定向到登录页面。
4. 认证
前端拦截器:
后端拦截器(AuthFilter):
获取请求的url,对比白名单,看是否需要跳过验证。
白名单配置:从nacos配置中心的配置文件中读取白名单列表
如果不在白名单列表,则判断token的各种状态:是否有token,token是否过期等。
如果token正常,则获取用户id和用户名,判断是否为空,为空返回令牌验证失败。
最后将token存入redis,并设置过期时间。 5. 登出
从请求中拿到token,判断token是否为空,不为空将token加上固定的前缀,根据前缀+token作为的key从redis中取出用户。如果拿到的用户不为空,删除redis用户缓存记录,记录用户退出日志。
前端:获取到退出请求将转到首页面。
6. 鉴权
前端:
后端:
@RequiresPermissions("monitor:online:list")
通过@RequiresPermissions注解来控制权限,如果有当前菜单的权限则展示该菜单,如果没有则不展示该菜单。
该注解在ruoyi-common模块下的security里:
利用aop切面技术将使用到该注解的方法进行环绕通知。
其中就包含@RequiresPermissions
角色权限:
权限验证,逻辑实现类:
校验用户是否登录,校验用户登录状态是否正常,获取当前用户的缓存信息,验证当前用户有效期。
验证当前用户是否具备某权限:
先获取该用户,再通过getPermiList()方法获取当前账号的权限列表:
如果验证未通过,则抛出异常: NotPermissionException。
该类包含鉴权方法:
①验证用户是否具备某权限, 如果验证未通过,则抛出异常: NotPermissionException
②根据注解(@RequiresPermissions)鉴权, 如果验证未通过,则抛出异常: NotPermissionException
③验证用户是否含有指定权限,必须全部拥有
④验证用户是否含有指定权限,只需包含其中一个
⑤判断用户是否拥有某个角色,如果验证未通过,则抛出异常: NotRoleException
⑥根据注解(@RequiresRoles)鉴权
⑦验证用户是否含有指定角色,必须全部拥有
⑧验证用户是否含有指定角色,只需包含其中一个
⑨根据注解(@RequiresLogin)鉴权
⑩根据注解(@RequiresPermissions)鉴权
另外还有辅助鉴权方法:
①获取当前账号的角色列表方法:getRoleList()
②获取当前账号的权限列表方法:getPermiList()
③判断是否包含权限方法:hasPermi()
④判断是否包含角色方法:hasRole() 问题1. 新增模块报gateway找不到路径404,postman调用接口显示500
因为新增的模块没有配置nacos里面的gateway配置文件,新增模块要新增routes路由,否则找不到。
spring :
redis :
host : localhost
port : 6379
password : 123456
cloud :
gateway :
discovery :
locator :
lowerCaseServiceId : true
enabled : true
routes :
# 认证中心
- id : uav-auth
uri : lb://uav-auth
predicates :
- Path=/auth/**
filters :
# 验证码处理
- CacheRequestFilter
- ValidateCodeFilter
- StripPrefix=1 2. 定时任务
新增一个定时任务
数据库该表新增一条数据
主要注意这三个字段的配置数字
欧盟决定对俄石油限价后,还想教中国做事,不许中国采购俄油在七国集团(G7)决定对俄罗斯石油进行限价后,欧盟紧随其后也有意参与其中,为了防止其他国家对俄罗斯施以援手,欧盟还想教中国做事,不许中国采购俄罗斯石油。据央视新闻报道,当地时间9月
最美参花一路参情丨通化市中国人参之乡产业强势崛起通化,中国人参之乡,是我国人参文化的发源地和长白山人参核心产区的主产区。通化市主动融入吉林省人参产业发展战略,助力全省打造千亿级人参产业。2021年,通化人参产业总产值达300亿元
死亡骑士任务追忆墓穴在哪里?经过漫长时间的任务摸索,我们到了向追忆墓穴的凯雷塞斯王子报道,相信还有很多玩家还不清楚。关注我魔兽不迷路任务详情我们已经开始向血色十字军的最后堡垒发动了进攻。在我们努力加固新的前线
今日白露你不知道的养生秘诀蒹葭苍苍,白露为霜白露时节,农作物即将成熟秋老虎也将逝去早晚温差也会加大,温度下降迅速秋意会越来越浓小圈这就给大家介绍这个节气应该如何吃,怎么养生白露如何养生谭超湖南中医药大学第一
今日黄金首饰多少钱一克?如何购买更加便宜,了解这几点就可以了黄金首饰价格对于很多人来说是一个特别难以琢磨的事情,因为款式差不多的卖的价格都可能有天差低别的差距。所以很多人对于买黄金首饰多少钱一克就弄不明白,那么在这里,小编就和大家一起来聊一
今日白露你不知道的养生秘诀白露时节,农作物即将成熟秋老虎也将逝去早晚温差也会加大,温度下降迅速秋意会越来越浓小圈这就给大家介绍这个节气应该如何吃,怎么养生谭超湖南中医药大学第一附属医院内科副主任医师1hr滋
白露吃三白,吃出健康来,今日白露,记得吃3白,健康过秋天导语白露吃三白,吃出健康来,今日白露,记得吃3白,健康过秋天白露到了,天气会发生一些变化,气温会下降,气候会变得更加干燥,因此白露过后,我们要懂得合理穿搭,别着凉了,还要在饮食上多
今日白露,坚持2不露,3要吃,遵循老传统,安稳度过金秋相信不少细心的朋友会发现,晨起的时候室外的草叶上慢慢有或多或少的露珠,是为二十四节气中的白露。今日就是白露,因为寒气渐长很多鸟儿也开始往南方迁徙避寒。人们也不例外,需要注意在衣和食
俄罗斯石油限价,今日油价跌超2,中秋后92号汽油或大跌9月6日发改委按机制上调汽柴油价格,国内汽柴油价格分别上调190元吨和185元吨,折合一升汽柴油分别上涨了0。15元和0。16元,加满50L则比调价前多话费7。5元左右的油费。油价
天天养生今日白露,多食清润!3个养阴润肺汤防秋燥文羊城晚报全媒体记者林清清今日白露,如何养生?广东省中医院急诊科广东省中医院张忠德全国名中医工作室主治医师金连顺提醒,此时要注意清润养肺防秋燥。所谓白露身不露。白露时节,已至仲秋,
今日白露,中医专家教你秋燥养肺三湘都市报新湖南客户端9月7日讯(全媒体记者李琪通讯员王鑫)今日是白露节气,也是秋季的第三个节气。秋季是燥邪当令的季节,风寒燥是白露时节的气候特点,容易出现感冒咳嗽口干便秘等不适。