Token令牌管理权限

admin 2024-01-25 31次阅读

什么是token

HTTP是一种无状态的协议,也就是HTTP没法保存客户端的信息,没办法区分每次请求的不同。

泰国ele官方中国网站

Token是服务器生成的一串字符,作为客户端请求的令牌。当第一次登陆后,服务器会分发字符串给客户端。后续的请求,客户端只需带上这个Token,服务器即可知道是该用户的访问。

美思科官方中国网站

使用,可以实现:权限管理、身份验证、防止同一账号异地登录。

Token的验证过程

1.客户端:用户名和密码请求登录

2.服务器:收到请求,验证用户名和密码,验证成功后,分发一个Token返回给客户端

3.客户端:将Token存储,例如放在 里或者 Local 里token 权限管理·(中国)官方网站,后续每次请求,带上此Token

4.服务器:收到请求,验证Token是否正确,验证成功返回请求数据

基于PHP实现token令牌管理权限

1.生成方法

上面三部分使用.连接起来,然后使用hs256进行加密,生成

2.详细生成方法

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

然后imToken钱包下载,这个json被编码,成为第一部分

{
      "exp": "1525785339",
      "sub": "1234567890",
      "name": "John Doe",
      "admin": true
}

然后将有效载荷进行编码,成为第二部分

(PS:此信息尽管受到篡改保护,但是任何人都可以阅读。除非加密,否则不要将重要信息放在里面)

HMACSHA256(
          base64UrlEncode(header) + "." + base64UrlEncode(payload),
          key
)

该签名用于验证消息是否有篡改。

(PHP使用crypt方法进行加密。注意:SHA-256用于防篡改,AES-256用于加密两个概念不一样)

token存放位置

通常应该在请求的头中的 字段使用 模式添加JWT(: ) (当然你也可以放在任意位置,如URL后面当成一个参数传递,只要客户端能识别就行,不过既然JWT是个规范,那么我们最好还是按照规范来)

4.使用方式

5.缺点

参考;