- 博客(6)
- 收藏
- 关注
原创 RUOYI项目部署(前后端不分离)
四 修改 SysIndexController(admin模块 org.vds.ruoyi.web.controller.system包中)一.去掉axios请求中的公共url配置选项,否则后续接口请求url都会加上这个url,导致接口异常。三 将生产的dist包复制到启动类所在模块的resources目录的static包下。如果出现下列错误,在package.json的scripts中加上这俩行。主要修改controller注解返回页面,以及返回内容改成index页面。node17版本问题。
2023-10-27 18:05:20
2785
1
原创 JWT登录认证
HttpSession机制:在登录完成之后的请求中,每次根据用户的session id 去HttpSession中获取用户信息存入SecurityContextholder(ThreadLocal),后续方法有需要用户信息都去SecurityContextholder中获取,请求结束之前,从SecurityContextholder取出,再存回HttpSession。2.loginService.login()方法。7.loadUserByName方法。9.webConfig配置。
2023-10-24 09:32:24
237
原创 处理幂等性
首先客户端请求服务端,获取一个 token,每一次请求都获取到一个全新的 token(当然这个 token 会有一个超时时间),将 token 存入 redis 中,然后将 token 返回给客户端。更新之前先去查询要更新记录的版本号,第二步更新的时候,将版本号也作为查询条件。客户端请求服务端,服务端将能代表本次请求唯一性的业务字段,通过 setnx 的方式存入 redis,并设置超时时间。如果 token 不在 redis 中,说明 token 过期或者当前业务已经执行过了,那么此时就不执行业务逻辑。
2023-10-24 09:11:03
96
原创 sprngboot在间隔时间内防止重复请求
设置拦截器在有注解@repeatsubmit的controller方法执行之前,根据当前的URI+Authorization为key值去redis中查询value(请求参数+请求时间),如果根据key值,没有查询到,则将当前请求参数跟请求时间存入redis设置过期时间为注解上的间隔时间,如果查询到,则将当前请求参数与redis中存放的参数比较,并判断时间间隔。请求参数相同,时间间隔小于设定时间间隔,则判断为重复请求。3.设置过滤器,如果请求参数是json的话,更换自定义的request对象往下继续执行。
2023-10-23 10:00:43
350
原创 springboot自定义限流注解(注解+aop)
使用aop,在有注解@Ratelimiter(注解中的变量包括时间窗口,限制访问次数)的方法中执行一个前置通知,在执行方法前 执行redis的lua脚本去redis中查询访问次数(key值为访问方法名称,value值为访问次数,如果是第一次访问,将时间窗口时间设置为该键值对的过期时间),在时间窗口内超过访问次数,抛出自定义异常交给全局处理器中对应的方法处理,返回相应的json。5.自定义redis config。3.自定义异常与全局异常处理。4.自定义lua脚本。
2023-10-21 15:07:19
344
1
原创 SpringBoot自定义多数据源(AOP+注解)
自定义一个@DataSource注解加在方法或者类上面,表示该方法或者类中的所有方法都使用某一个数据源(注解中的值就是是数据源名称)通过aop使用环绕通知在方法执行前将所使用的数据源名称存入到ThreadLocal中(并在方法执行完成后remove ThreadLocal的值),重新实现AbstractRoutingDataSource类,使其在方法执行期间读取数据源时,自动去ThreadLocal获取数据源名称。(没有注解使用默认数据源)1。
2023-10-20 10:28:25
594
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅