vuejs+koa2+mysql全栈开发个人博客(四) —— 后台操作权限

在这篇博客中,我将会详细介绍这个博客搭建的第三个技术要点:
后台操作权限

我们知道,有些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();
    }
  }
}

如果验证通过,这允许操作。

你可能感兴趣的:(前端项目,vuejs,mysql,nodejs,koa2,express)