token
Token Auth
使用基于Token的身份验证方法,无需长期保存用户名和密码,服务器端能主动让token失效等诸多好处,对于Web应用和App非常实用,也被很多大型网站采用,如FaceBook、Github、Google等
流程如下:
1、客户端使用用户名和密码请求登录
2、服务端收到请求,去验证用户名与密码
3、验证成功后,服务端签发一个Token,并将该Token返回给客户端 (授权)
4、客户端收到Token以后把它存储起来,如放在Cookie中或存在本地
5、客户端每次向服务端请求资源的时候都需要带着服务端签发的Token
6、服务端收到请求,然后去验证客户端请求里带着的Token(鉴权),如果验证成功,就向客户端返回请求的数据
优点(Token机制相对于Cookie机制的优点):
1、支持跨域访问:Cookie是不允许跨域(不同域名 主机和端口)访问的,这一点对于Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输
2、无状态(或称:服务端可扩展行):Token机制在服务端不需要存储Session信息,因为Token本身就包含了所有登录用户的信息,只需要在客户端的cookie或本地介质存储状态信息
3、更适用CDN(内容分发网络):可以通过内容分发网络请求服务端所有的资料(如javascript,HTML,图片等),而你的服务端只要提供API即可
4、解耦:不需要绑定到一个特定的身份验证方案。Token可以在任何地方生成,只要在你的API被调用的时候,你可以进行Token生成并调用即可
5、更适用于移动应用:当你的客户端是一个原生平台(iOS,Android,Windows 8等)时,Cookie是不被支持的(你需要通过Cookie容器进行处理),这时采用Token认证机制就会简单很多
6、CSRF:因为不再依赖于Cookie,所以你就不需要考虑对CSRF(跨站请求伪造)的防范
7、性能:一次网络往返时间(通过数据库查询session信息)总比做一次HMACSHA256计算的Token验证和解析要费时得多
8、不需要为登陆页面做特殊处理,如果使用Protractor做功能测试的时候,不再需要为登录页面做特殊处理
9、基于标准化:你的API可以采用标准化的JSON Web Token,这个标准已经存在多个后端库(.NET,Ruby,Java,Python,PHP)和多家公司的支持。
————————————————
//登录服务
@GetMapping("/login")
private String login(@RequestParam("id") Integer id) {
//查询用户是否存在
User user = map.get(id);
if (null == user) {
return "该用户不存在,登录失败!";
}
//用户存在 生成token
String token = JwtUtil.createJwt(UUID.randomUUID().toString(), "user", null);
System.out.println(token);
return token;
}
————————————————
版权声明:本文为CSDN博主「Dean_xiu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Dean_xiu/article/details/122935091
//修改用户服务
@PutMapping("/update")
private User update(@RequestParam("id") Integer id, @RequestBody User user, HttpServletRequest request) {
//也可以通过request请求的头部,在请求里拿到token
String token = request.getHeader("token");
System.out.println(token );
//模拟修改用户信息
user.setId(id + 2);
return user;
}
————————————————
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南