本篇宗旨是实打实尽量教会读者去做,所有不讲太多原理,只讲怎么做,同时也是个人学习记录
一、node代码生成token部分
1、安装相关依赖
npm i express-jwt
npm i jsonwebtoken
2、相关文件引入(在自己项目需要的地方引入)
const jwt = require("jsonwebtoken");
const {expressjwt} = require("express-jwt");
3、生成token,并且由接口返回前端
一、先定义一个密钥:
const theKey = "mykey"; //定义密匙
这里可以随便你想怎么定义
二、保存相关信息生成token
let token = jwt.sign({ username: params_send.username }, theKey, {expiresIn: "6000s",});
这是直接用了jwt的sign方法,感兴趣的可以深入,这样写就能够生成token了,然后在相关的方法去返回
router.post("/getAuthorizationLogin", (req, respons) => {
allway.authorizationLogin(req).then((res) => {
respons.send({
code: 1,
status: 200,
messages: "登陆成功",
token: res,
});
})
.catch((err) => {
console.log('这是错误得', err);
})
});
二、前端接受token部分(用的微信小程序做列子)
当接口请求通过后,把token存入缓存中,然后在请求方法中的请求头中添加token
一、请求头设置
不知道怎么设置请求头的小伙伴得自行百度了
const token_type = "Bearer"
let header = {
'content-type': 'application/x-www-form-urlencoded', // 默认值
Authorization: token_type + ' ' + wx.getStorageSync('token')
}
可看出token是放在请求头中的Authorization中,保证我们每个请求头中都带有Authorization
2、请求头加入请求中
wx.request({
url: '',
method: '',
data: data,
header: header,
dataType: 'json',
responseType: 'text',
success: (res) => {},
fail: (res) => {}
})
这样前端就实现了发送token
三、node代码接受验证token
在第一步的时候安装了express-jwt,它就是用来解析传入的token的,这里只讲怎么写
在node运行的js文件中 (这里我自己的叫做index.js),引入文件、注册中间件
const {expressjwt} = require("express-jwt");
app.use(expressjwt({secret: theKey,algorithms: ["HS256"]}).unless({path: ["/api/authorizationLogin"],});
.unless里面的内容是不需要进行token认证的方法,按需求设置
注意:该中间件需要放在路由之前!