token:jsonwebtoken在koa中使用

1:客户端通过用户名和密码登录 
2:服务器验证用户名和密码,若通过,生成token返回给客户端。 
3:客户端收到token后以后每次请求的时候都带上这个token,相当于一个令牌,表示我有权限访问了 
4:服务器接收(通常在拦截器中实现)到该token,然后验证该token的合法性。若该token合法,则通过请求,若token不合法或者过期,返回请求401请求失败。

1.token相比于session,它无需保存在服务器,不占用服务器内存开销。

2.token可以在服务器集群中很好的使用:无状态、可拓展性强

3.服务器生成的token如下:分为3部分,以点来分割;

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiaHVzaGl3ZWk1MjAiLCJpZCI6NDYsImlhdCI6MTU5MTM0MDQyNiwiZXhwIjoxNTkxMzQ3NjI2fQ.B-NAeiQPk0iiJRHkBJnodVadUlDXBabXrAyTomVxcww

第一部分:token头部

头部(Header),格式如下: 
{ 
“typ”: “JWT”, 
“alg”: “HS256” 
}

token使用HS256加密算法,将头部使用Base64编码可得到:‘eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9’

第二部分:paload: 存放自定义信息;预定义信息有如下几个;它的编码:‘eyJuYW1lIjoiaHVzaGl3ZWk1MjAiLCJpZCI6NDYsImlhdCI6MTU5MTM0MDQyNiwiZXhwIjoxNTkxMzQ3NjI2fQ’

iss:该JWT的签发者
sub:该JWT所面向的用户
aud:接受该JWT的一方
exp(expires):什么时候过期,这里是一个Unix时间戳
iat(issued at):在什么时候签发

第三部分,签名部分;前两部分都是明文;它的编码:‘B-NAeiQPk0iiJRHkBJnodVadUlDXBabXrAyTomVxcww’

4.通过这个网站来解码,网站地址:https://jwt.io/

5.koa中的代码签发token如下:

// 用户名密码正确后,签发token
    const token = jwt.sign({
      name: TextRow[0].username,
      id: TextRow[0].id
    },"sometokens", {expiresIn: '2h'});
    resData = {
      info: "用户名密码正确",
      status: 0,
      token: token
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章