SpringBoot如何实现token登录
发表于:2025-11-20 作者:千家信息网编辑
千家信息网最后更新 2025年11月20日,这篇文章主要为大家展示了"SpringBoot如何实现token登录",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"SpringBoot如何实现token登
千家信息网最后更新 2025年11月20日SpringBoot如何实现token登录
这篇文章主要为大家展示了"SpringBoot如何实现token登录",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"SpringBoot如何实现token登录"这篇文章吧。
为什么引入token机制?
在进行登录验证时,我们需要session或cookie会话进行验证,客户端包括浏览器、app、微信小程序、公众号,只有浏览器有session和cookie机制,当我们脱离浏览器用app等向服务端发请求就没有session和cookie机制,这时我们就需要使用token令牌进行登录验证。
代码实现
先建个util包,并创建TokenUtil类用于生成token
TokenUtil类代码
package com.qcby.util; import com.qcby.entity.User; import java.util.HashMap;import java.util.Map;import java.util.UUID; public class TokenUtil { /** * 创建map用于存储所有的令牌 * * token - User */ private static Map tokenMap=new HashMap<>(); /** * 生成token,存储token-user对应关系 * 返回token令牌 * @param user * @return */ public static String generateToken(User user){ //生成唯一不重复的字符串 String token = UUID.randomUUID().toString(); tokenMap.put(token,user); return token; } /** * 验证token是否合法 * @param token * @return */ public static boolean verify(String token){ return tokenMap.containsKey(token); } /** * 根据token获取用户信息 * @param token * @return */ public static User getUser(String token){ return tokenMap.get(token); }} LoginInterceptor类代码
package com.qcby.interceptor; import com.qcby.util.TokenUtil;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession; public class LoginInterceptor implements HandlerInterceptor { //Controller逻辑执行之前 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("preHandle...."); String uri = request.getRequestURI(); System.out.println("当前路径"+uri); /** * HandlerMethod=>Controller中标注@RequestMapping的方法 * 需要配置静态资源不拦截时,添加这块逻辑 => 前后端分离项目 */ if (!(handler instanceof HandlerMethod)) { return true; } String token=request.getHeader("qcby-token"); if (!TokenUtil.verify(token)) { // 未登录跳转到登录界面 throw new RuntimeException("no login!"); } else { return true; } } //Controller逻辑执行完毕但是视图解析器还未进行解析之前 @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { System.out.println("postHandle...."); } //Controller逻辑和视图解析器执行完毕 @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { System.out.println("afterCompletion...."); }}实现类
@RestController@RequestMapping("user")public class UserController { @Autowired private UserService userService; @ApiOperation("用户登录接口") @RequestMapping(value="login",method = {RequestMethod.GET,RequestMethod.POST}) public Maplogin(User user){ Map map=new HashMap<>(); map.put("code",0); if(StringUtils.isEmpty(user.getUsername())||StringUtils.isEmpty(user.getPassword())){ map.put("msg","用户或密码为空!"); return map; } QueryWrapper queryWrapper=new QueryWrapper<>(); queryWrapper.eq("username",user.getUsername()) .eq("password",user.getPassword()); User user1=userService.getOne(queryWrapper); if(user1!=null){ String token= TokenUtil.generateToken(user1); map.put("cod",1); map.put("data",user1); map.put("token",token); }else { map.put("msg","用户名或密码错误!"); } return map; }} 拦截器类可以参考这篇文章,这个token验证就是在拦截器上改动的。
SpringBoot拦截器实现登录拦截
需要有postman验证

以上是"SpringBoot如何实现token登录"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
登录
验证
用户
篇文章
逻辑
代码
令牌
内容
机制
拦截器
浏览
生成
密码
浏览器
视图
存储
学习
帮助
合法
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库可以单独分离表吗
三级网络技术软件
地税网络安全法宣传方案
网络安全电话号码
广安网络技术有效果吗
网络安全的重要案例
下一步将继续加强网络安全
数据库设计视图中不能进行的操作
网络安全工程师 实验楼
c如何操作数据库
五轴工具磨床软件开发
网络安全技能价值分析
ibmxseries服务器登录
网络安全重保 成绩总结
思科网络技术第二章测试
数据库的安全性是指数据库的
网络技术基础学什么的
台湾服务器机箱
正保会计视频数据库知识竞赛
英语网络安全作文100字
https正向代理服务器
软件开发组织人员配置
将数据库一列数据取整十sql
明略科技工业互联网
软件开发毕业设计任务及目标
重庆邮电大学数据库教材
通讯及网络技术有限公司
什么叫视频存储服务器
饥荒服务器模组星星是什么
网络安全法心得休会200