在这篇博客中,我将会详细介绍这个博客搭建的第三个技术要点:
后台操作权限
我们知道,有些api是游客可以使用的,比如查看一篇博客,根据分类查看博客等等,但是有些api是博主才能使用的,比如增删改一篇博客。
那么我们如何区分开来呢?
我们创建了两个axios对象
const back = axios.create(); //后台axios实例
const front = axios.create(); //前台axios实例
并且给back设置‘Authorization’头为存储的登录信息
back.defaults.headers.common['Authorization'] = "Bearer " + localStorage.getItem('jwt').replace(/(^\")|(\"$)/g, '')
这样做,访问后台api时,是带着登录信息访问的
并在执行这些api之前,先进行了token的验证
const jwt = require('jsonwebtoken');
module.exports = function (ctx,next) {
if (ctx.request.headers['authorization']) {
let token = ctx.request.headers['authorization'].split(' ')[1]
let decoded = jwt.decode(token, process.env.JWT_SECRET)
// 如果过期了就重新登录
// 验证token也需要优化
if (token && decoded.exp <= Date.now() / 1000) {
ctx.body = {
code: 401,
message: "授权已经过期,请重新登陆"
};
return;
}else{
next();
}
}
}
如果验证通过,这允许操作。