美文网首页
egg签发令牌token

egg签发令牌token

作者: divcssjs | 来源:发表于2019-08-14 20:25 被阅读0次

    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},就像这样

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

    相关文章

      网友评论

          本文标题:egg签发令牌token

          本文链接:https://www.haomeiwen.com/subject/fnnnjctx.html