jwt 是 什么
- jwt -全名 json web token
- 用户认证成功后,server 端返回一个加密的token 给客户端
- 客户端后面每次请求都带token,以表示当前的用户身份
nodeJs 实现 jwt
npm i jsonwebtoken --save-dev
如何使用jwt?
// constants.js
module.exports = {
SECRET: 'Usdy+976_+qwe'
}
// user.js
const jwt = require('jsonwebtoken')
const { SECRET } = require('./conf.constants)
// 登录将用户的token返回给用户
router.post('/login', async (ctx, next) => {
const { userName, password } = ctx.request.body
// 登录成功
/**
1 返回的用户信息,
2 加密的密匙
3 token 存在的时间
*/
if() {
let token = jwt.sign(userInfo, SECRET, {expiresIn: 36000})
ctx.body = {
token: 'Bearer ' + token // 名字一定要是Bearer 才能生效
}
}
})
获取用户信息
// 将登录获取的token 存起来 传给服务端
//
const { SECRET } = require('./conf.constants)
const util = require('util')
// util.promisify 变成一个promise
const verify = util.promisify(jwt.verify)
router.get('/getUserInfo', async (ctx, next) => {
// 获取浏览器传过来的 token
const token = ctx.header.authorization
try {
const payload = await verify(token.split(' ')[1], SECRET)
console.log(payload) // => {userName: 'zhangsan', password: '123456', nickName:'张三'}
ctx.body = {
code: 200,
data: payload
}
} catch (ex) {
ctx.body = {
error:201,
msg: 'TOEKN 过期'
}
}
})
总结:以上就是jwt在项目中的使用,解析流程。 原文链接:从前慢的时光驿站