egg签发令牌token

2019-08-14  本文已影响0人  divcssjs

egg框架搭建好
在router.js中配置几个路由

常用的配置:config文件夹下
1.关闭安全策略,才可以使用post请求
2.调大上传限制 防止大文件图片上传不了
3.jwt 令牌的配置项之一

// config.default.js
 const config = exports = {
    security: {//关闭安全策略 开启post之旅
      csrf: {
        enable: false,
      },
    },
    bodyParser: {//解除文件上传大小限制
      jsonLimit: '100mb',
      formLimit: '100mb',
    },
    jwt: {  //令牌配置项
      secret: "123456"
    }
  };

  config.middleware = ['jwtErr'];

plugin.js配置
1.第一个是关于mysql的插件,很方便
2.令牌配置项之一
3.此文件里的package的值都是依赖,要下载

module.exports = {
  mysql: {
    enable: true,
    package: 'egg-mysql',
  },
  jwt: {
    enable: true,
    package: 'egg-jwt',
  }
};

app文件夹下新建立文件夹middleware
内部新建js jwtErr.js
在第一块代码块中 会注册这个js

module.exports = (options, app) => {
    return async function (ctx, next) {
        try {
            await next();
        } catch (e) {
            ctx.status = 401;
            ctx.body = {
                msg: '身份过期,重新登录',
                code: -1,
            }
        }
    }
}

在需要的路由上设置app.jwt
设置了的路由会根据令牌的有效时间对你次路由内的请求做判断,失效就不能请求,返回401,需重新登录,获取新的token值

router.get('/getaside', app.jwt, controller.home.getaside.getaside);//获取后台侧栏数据

注意:你发的请求必须有请求头,属性为Authorization,值是登录成功获取的token
所以有必要封装有个axios,官方网站上有请求拦截的介绍,只需return一个header头,带上egg-jwt的专属请求头即可

还有一点:egg-jwt的创建令牌方法:

const token = app.jwt.sign({ foo: 'bar' }, app.config.jwt.secret);

//  返回给前端 存本地 发请求时带上请求头

这个令牌第一个参数可以把账号密码的对象穿进去,{user:admin,pwd:123456},就像这样

返回给前端 存本地 发请求时带上请求头
返回给前端 存本地 发请求时带上请求头
返回给前端 存本地 发请求时带上请求头

上一篇下一篇

猜你喜欢

热点阅读