Nodejs-token

作者: 07120665a058 | 来源:发表于2017-06-17 16:35 被阅读237次

    token基础

    • 一个JWT(Java Web Token)实际上就是一个字符串,它由头部、载荷与签名 三部分组成
    • 编码之后的JWT是这样的一串字符
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
    eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.
    TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 
    
    • .分为三段,通过解码可以得到
    // 1. Headers头部
    // 包括类别(typ)、加密算法(alg)
    {
     "alg": "HS256",
     "typ": "JWT"
    }
    // 2. Claims载荷
    // 包括需要传递的用户信息
    {
     "sub": "1234567890",
     "name": "John Doe",
     "admin": true
    }
    // 3. Signature签名
    // 根据alg算法与私有秘钥进行加密得到的签名字串
    // 这一段是最重要的敏感信息,只能在服务端解密
    HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), SECREATE_KEY)
    

    核心代码

    const jwt = require('jsonwebtoken');
    const secret = 'qwert';   //自定义
    app.set('superSecret', secret);
     //生成token
    const token = jwt.sign(user, app.get('superSecret'));
    //解码token
    jwt.verify(token, app.get('superSecret'), function (err, decoded){
        //decoded 是得到的用户信息
    }
    

    原理

    • 安装nodejs的模块jsonwebtoken,设置一个字符串当作密钥
    • 如果登录成功,服务器就根据用户名和密钥生成一个token,并返回token给客户端
    • 如果想得到个人信息,就可以发送这个token,经过verify验证成功,得到信息

    总结

    • 可以把生成的token存放在cookie中,相当于把session Id存放在cookie

    demo地址

    参考文章推荐:
    Authenticate a Node.js API with JSON Web Tokens
    JWT 在前后端分离中的应用与实践

    相关文章

      网友评论

        本文标题:Nodejs-token

        本文链接:https://www.haomeiwen.com/subject/kiuuqxtx.html