token的使用
创始人
2024-04-11 05:32:10

一:什么是token及token的作用?

1.什么是token?

Token是首次登录时,由服务器下发,作为客户端进行请求时的一个令牌。当请求后台方法时,用于身份验证

当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码

2.Token的作用?

Token完全由应用程序进行管理,所以它可以避开同源策略
Token可以避免CSRF(跨站请求访问)攻击 

 简单的说:后端生成token 会有一个签名(基本上后端自己设计)  避免外部攻击!

Token可以是无状态的,可以在多个服务器之间共享
使用Token减轻服务器的压力,减少频繁的查询数据库

3.Token的身份认证过程!

1.用户通过用户名和密码发送请求

2.程序进行验证

3.程序会返回一个字符串(就是token)给客户端

4.客户端进行储存token,并且用于每一次请求

5.服务器验证并且返回想要的数据

现在知道token是干什么的了,那么怎么使用token呢?

 二:JWT介绍

1.什么是JWT 

JWT,全称为JSON Web token,是用于对应用程序上的用户进行身份验证的标记。也就是说,使用JWT的应用程序不再需要保存有关其用户的cookie或session数据

* 在身份验证过程中, 当用户使用其凭据成功登录时,将返回JWT,客户端会将其保存到本地存储中,而后每次请求都会携带

* JWT本质上就是一个经过加密处理与校验处理的字符串,

它由三部分组成:头信息.有效载荷.签名
    头信息: 一般由两部分组成,Token类型和散列算法(HMAC、RSASSA、RSASSA-PSS等)

{"typ": "JWT","alg": "HS256"
}


    有效载荷: 一般里面可以存储自定义的实体的信息

payload(载荷)信息存放的是Claims声明信息。载荷其实就是自定义的数据,一般存储用户Id,过期时间等信息。也就是JWT的核心所在,因为这些数据就是使后端知道此token是哪个用户已经登录的凭证。而且这些数据是存在token里面的,由前端携带,所以后端几乎不需要保存任何数据。


    签名: 用于保证消息在传输过程中不会被篡改

signature(签名)需要使用编码后的header和payload以及一个秘钥,使用header中指定签名算法进行签名。

 2.JWT的流程

 3.项目中使用JWT

1.依赖

io.jsonwebtokenjjwt0.9.1

 2.封装工具类 创建和解析token(调用)

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;import java.util.Map;public class JwtUtil {// 创建tokenpublic static String createToken(Long id,String secret) {Map map = new HashMap();map.put("id", id);return Jwts.builder().setClaims(map) //设置响应数据体.signWith(SignatureAlgorithm.HS256, secret) //设置加密方法和加密盐.compact();}// 解析tokenpublic static Map parseToken(String token,String secret) {return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();}}

最后token 相当于这玩意:

 "token": "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MTI4fQ.BUsv0fc8qI2Yx02vEDLUR1JSc-FV5Sr8NuqsXIKPiNg"

 

相关内容

热门资讯

这... 哈喽,小兰儿来咯,今天给大家推荐一个好玩的,哄对象模拟器,不管你是有对象,还是没对象,都给自己安排一...
人... 由于公众号做了改版,为了保证公众号的资源推送,请大家星标一下公众号,不星标无法第一时间收到推送,或收...
2...    近日,中国软件和信息服务业年度风云榜组委会发布了2023第七届中国软件和信息服务业年度风云榜推...
国... 1月30日,国家数据局局长刘烈宏一行莅临博思软件福州总部调研,参观了博思软件企业展厅。刘烈宏表示,要...
软...   软件测试是产品周期中必不可少的一步,可以更好的保障软件质量,那么我们所知的软件测评中心一般有哪些...