[JWT and Ip2Region]JWT登录验证与ip地区解析

发布于 2025-01-02  2 次阅读


JWT登录验证与ip地区解析


本篇文章用于记录自己项目中,关于注册登录验证、ip地区解析与权限控制的内容

之前写的项目纯粹靠后端查询mySQL验证前端发过来的用户和密码,也没有请求拦截和过滤,掩耳盗铃了属于是,现将JWT登录验证与权限控制记录如下,顺便记录一下ip2region在springboot的使用:

  1. 配置好ip2region的依赖,导入ip2region的数据,封装成为一个工具类,注册到用户服务类,在注册控制类中通过HttpServletRequest得到注册请求时的ip,解析成地区;
  2. 基于Spring Security框架,在SecurityConfig 配置类里,注入一个 Jwt过滤器实例,授权放行注册和登录接口,禁用默认的表单登录功能改用JWT过滤器验证;
  3. 在用户服务类中,首先注入UserInfoMapper、PasswordEncoder 和 Ip2RegionUtil类,然后分别实现令牌生成、注册、登录、邮箱验证、更新预测次数、根据token获取用户信息等方法;
  4. 关于JWT过滤器:通过@Value 注解获取 JWT 密钥与有效实现,并重写 doFilterInternal 方法(经过验证后,将认证对象设置到安全上下文中),实现提取 JWT、验证 JWT和解析信息的方法;
  5. 关于预测拦截器:在webconfig里注册自定义拦截器,重写添加拦截器方法,指定拦截所有预测的请求。在拦截器类里重写preHandle 方法:先从请求中获取 userId,然后检查并更新该用户剩余预测次数。
  6. 前端设置:在路由里设置全局路由守卫,从Vuex Store 获取认证状态,没有登录的话无法访问查询与预测页面,自动跳转登录页面。设置axios请求拦截器,检查认证token,有的话就自动将token添加到所有请求头的 Authorization中,无效或过期时自动跳转登陆页面。使用 Vuex 管理状态(包含状态管理、获取器和动作),使用 localStorage保存登录token。