首页 > 其他分享 >token

token

时间:2023-06-15 19:11:51浏览次数:21  
标签:Token token Cookie id 服务端 客户端

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;
}
————————————————

标签:Token,token,Cookie,id,服务端,客户端
From: https://www.cnblogs.com/zqlmianshi/p/17483865.html

相关文章

  • 彻底理解GPT tokenizers
    彻底理解GPTtokenizers你可能已经听说过GPT这个词,它是一种人工智能模型,可以生成各种各样的文本,比如小说、诗歌、对话、新闻等等。GPT的全称是GenerativePre-trainedTransformer,意思是生成式预训练变换器。生成式表示它可以根据一些输入(比如一个单词或一句话)来创造新的内容,预训......
  • 配置公众号token
    constexpress=require('express')constapp=express()app.use((req,res,next)=>{console.log(req.query);//这里很关键的一句,表示发送的消息是以纯文本形式发送的res.set('Content-Type','text/plain')res.send(req.query.echo......
  • pandas.errors.ParserError: Error tokenizing data. C error: Expected 9 fields in
    用pandas读取csv格式文件时,里面有的行比前面的行多出好多列,会报下面的错df=pd.read_csv(file_name_csv,encoding="GBK")File"pandas\_libs\parsers.pyx",line905,inpandas._libs.parsers.TextReader._tokenize_rowsFile"pandas\_libs\parsers.pyx",line......
  • 【HMS Core】华为帐号服务,获取Access Token报错{sub_error:20152,error_description:inv
    ​ 【问题描述】华为账号服务,接口获取AccessToken报错:{sub_error:20152,error_description:invalidcode,error:1101} 【问题分析】根据官网提示,是code格式不正确造成的,需要检查参数配置​ 【解决方案】1、此问题解决方案,可以参考这篇帖子https://developer.huawei.com/......
  • 【HMS Core】华为帐号服务,获取Access Token报错{sub_error:20152,error_description:inv
     【问题描述】华为账号服务,接口获取AccessToken报错:{sub_error:20152,error_description:invalidcode,error:1101}【问题分析】根据官网提示,是code格式不正确造成的,需要检查参数配置【解决方案】1、此问题解决方案,可以参考这篇帖子https://developer.huawei.com/consumer/cn/forum/......
  • 基于PHP方法,微信公众号小程序获取code,access_token,openid,用户信息
    //发起获得code值链接publicfunctiondoPageGetcode(){$appid='yourappid';//修改你的appidif(!$appid){return$this->result(10008,'参数错误','');}//这里的$redirect_uri地址需要http://,跳转对于登录doPageOpenid方法,在微信公众号上面也有添加这个域名http://w......
  • 后端获取TOKEN返oss上传地址,前端如何将字符串传给这个地址
    您也可以使用Axios库来发送请求,以下是发送表单请求的示例代码:constaxios=require('axios');functionuploadStringToOSS(ossPostData,content){constformData=newFormData();Object.keys(ossPostData.fields).forEach(key=>{formData.append(key,os......
  • Invalid character found in method name. HTTP method names must be tokens
    Gayhub上下载了一个别人的项目跑着玩,启动成功了,但是请求controller的时候,出现了这种错误:2018-08-2517:57:26,673-ErrorparsingHTTPrequestheaderNote:furtheroccurrencesofHTTPheaderparsingerrorswillbeloggedatDEBUGlevel.java.lang.IllegalArgumentEx......
  • 前后端分离架构下使用 Sa-Token 完成登录认证
    一、架构分析目前绝大多数系统都已经采用“前后端分离”架构来设计了,传统的Session模式鉴权也不再适合这种架构(或者需要额外写很多的代码来专门适配)。Sa-Token是一个java轻量级权限认证框架,专为前后端分离架构打造,主要解决登录认证、权限认证、单点登录、OAuth2、微服务网......
  • sa-token集成jwt
    向spring容器中加入一下类:用于重写:<!--https://mvnrepository.com/artifact/cn.dev33/sa-token-spring-boot-starter--><dependency><groupId>cn.dev33</groupId><artifactId>sa-token-spring-boot-starter</arti......