文章目录
-
- 概要
- 整体流程
- 注意事项
-
- 一、拦截路径
- 二、token
- 三、注册防止用户从夫提交
概要
结合Spring Boot和Vue3实现安全的用户登录
和退出
功能,并使用拦截器、JWT和Redis缓存来提高系统的安全性和性能。
整体流程
注意事项
一、拦截路径
像登录页面的路径就不要拦截了,否则都不能登录了
例如:
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
@Autowired
private JwtTokenapiInterceptor jwtTokenapiInterceptor;
/**
* 注册自定义拦截器
*/
protected void addInterceptors(InterceptorRegistry registry) {
// 添加拦截器
// 添加拦截路径 排除拦截路径
registry.addInterceptor(jwtTokenapiInterceptor)
.addPathPatterns("/api/**")
.excludePathPatterns("/api/employee/login");
}
}
需要提前定义好拦截器,并加入容器(用@Component
注解)
二、token
- 用户登录验证密码等通过后,生成token,token中放入用户id,并存入redis(将token存储到redis中,便于管理Token的状态和生命周期)。
- 下次请求拦截器先拦截,解析token中的用户id,然后从redis里面读取token验证,验证用户合法性。
- 退出登录,前端发一个请求给后端,删除redis中的token。
注意:
- 不要将敏感信息(如密码)放在Token中。
- 妥善保管用于生成和验证token的密钥。
三、注册防止用户从夫提交
我自己写了一个小demo,邮箱注册登录。
发送验证码,可能不小心点了两下等重复提交操作。解决方法:用redis
其他方法:
记录发送时间戳
:后端可以记录每个用户发送验证码的时间戳。如果用户在短时间内发送多次验证码请求,后端可以检查最新的请求时间戳与上次请求时间戳的间隔,如果间隔时间太短,就拒绝处理额外的请求
前端限制
:在前端实现点击发送验证码按钮后,禁用按钮一段时间,防止用户连续点击发送。可以在发送验证码后,将按钮禁用一段时间,以防止用户误操作多次点击发送。