校易淘登录实名校验 + Token 权限控制完整实现

校易淘登录实名校验 + Token 权限控制完整实现 一、模块业务需求校易淘仅限本校师生使用采用学号登录核心需求注册、登录必须校验学号格式登录成功颁发 JWT 令牌所有业务接口携带 Token 访问未登录用户直接访问商品、订单页面路由自动拦截跳转登录Token 过期自动提示用户重新登录。二、后端核心代码实现JWT 工具类 JwtUtiljavaComponent public class JwtUtil { private static final String SECRET_KEY campus-trade-secret-key-2026; private static final long EXPIRE_TIME 1000 * 60 * 60 * 24; // 24小时 // 生成token public String generateToken(Long userId,String stuId) { Date now new Date(); Date expireDate new Date(now.getTime() EXPIRE_TIME); return Jwts.builder() .setSubject(stuId) .claim(userId,userId) .setIssuedAt(now) .setExpiration(expireDate) .signWith(SignatureAlgorithm.HS256, SECRET_KEY) .compact(); } // 校验token public Claims parseToken(String token){ return Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token).getBody(); } }登录接口 UserController 接收学号、密码查询数据库匹配校验成功返回 token增加学号格式正则校验。Token 拦截器 AuthInterceptor 拦截所有请求获取请求头 token解析校验未携带 / 失效 token 直接返回未登录提示。WebMvcConfig 注册拦截器放行登录、注册接口。三、前端登录页面与路由守卫登录表单增加学号正则校验仅允许数字学号登录成功将 token 存入 localStorageaxios 请求拦截器自动在 headers 添加 Authorization: Bearer ${token}路由守卫 router.beforeEach读取本地 token无 token 强制跳转登录页。jsrouter.beforeEach((to, from, next) { const token localStorage.getItem(token) if(to.path /login){ next() }else{ if(token){ next() }else{ ElMessage.warning(请先登录) next(/login) } } })四、数据库 user 表关联说明学号 stu_id 设置唯一索引保证一个学号只能注册一个账号从底层杜绝重复注册。五、业务逻辑拆解前端表单校验学号格式减少无效请求后端二次校验学号、密码密码使用 BCrypt 加密存储不存明文Token 拦截器统一管控所有业务接口无需每个接口单独判断登录状态路由守卫管控页面访问权限实现前后端双重权限校验安全性更高。六、开发难点总结开发时遇到 Token 过期前端无感知、拦截器放行路径配置错误等问题最终通过全局响应拦截捕获 401 状态码清除本地 token 并跳转登录完美解决。