一、JWT

        需要在 HTTP 这种无状态的机制下,记录下(标识)出来是不是连续(逻辑上的连续)的请求。

        思路:如果多次请求,携带了相同的标识型数据,则认为是逻辑上连续的。这个标识,就称为token。

token必要的特征:

  • 时效性
  • 保密性
  • 不可篡改性
  • 不可伪造性
  • 信息携带,具有载荷

JWT官网

        JWT,就是典型的token设计方案,被大多数的HTTP后端所采用。
        JWT:JSON Web Tokens,将特定数据的JSON编码后,通过签名,base64编码,形成特定的字符串,称为 JWTtoken。

例:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

JWT,由三个部分构成,编码后,使用分割:

1. header,头信息(属性部分)

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

2. payload,载荷(数据部分)

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

3. signature,数字签名

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  
your-256-bit-secret

) secret base64 encoded

数据采用base64编码,不是加密。

base64编解码网址:把上方token按照点分开去解码内容如上

JWT-Token-LMLPHP

TOKEN 生成的流程:

  1. 后端生成,secret key 保存在后端
  2. 响应给前端
  3. 前端存储
  4. 后续请求时携带

        前端请求时,通常使用 query-string, header、cookie 的方式进行存储传递。建议使用header的方式,因为没有跨域的问题。

使用header时,通常使用头:

Authorization: Bearer <token>

时人不识凌云木,直待凌云始道高。

谁能比别人领先一步掌握新技术,谁就在竞争中赢得了先机。

08-24 08:38