egg.js登录获取token验证信息 (egg-jwt)

登录获取token

  • 一.安装和配置
    • 1.安装egg-jwt和egg-cors
    • 2.在egg项目中配置插件
  • 二.登录接口使用
    • 1.控制器controller里写登录接口
    • 2.路由router里写接口路径
  • 三.请求login接口

一.安装和配置

1.安装egg-jwt和egg-cors

cnpm i egg-jwt --save

使用jwt需要配合cors来配置跨域请求否则会报错 message: “invalid csrf token”

cnpm install egg-cors --save

2.在egg项目中配置插件

安装好过后在config文件夹面配置

plugin.js文件里

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

config.default.js文件里

  //cors跨域配置
  config.security = {
     
    csrf: {
     
      enable: false,
    },
    domainWhiteList: ['*'], //允许访问域名的白名单,*表示都能访问
  };
  config.cors = {
     
    origin: '*',
    allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS', //允许请求的方法
  };
  //jwt鉴权配置
  config.jwt = {
     
    secret: '123456', // token的加密的密钥,自己随便设置
  };

二.登录接口使用

1.控制器controller里写登录接口

app/controller/user.js

const Controller = require('egg').Controller;
class UserController extends Controller {
     
  //登录并生成token
  async login() {
     
    //获取用户通过post请求传过来的参数
    const {
     
      ctx,
      app
    } = this
    const data = this.ctx.request.body
    if (data.userName == 'woshigezhu' && data.password == '123456') {
     
      // 通过jwt生产token
      const token = app.jwt.sign({
     
        userName: data.userName,     //需要存储的Token数据
      }, app.config.jwt.secret, {
        //app.config.jwt.secret是在配置里配置的密钥'123456'
        expiresIn: 60 * 60 * 24    //expiresIn是token过期时间
      });      
      // 返回token
      ctx.body = {
     
        code: 0,
        token,
      }
    } else {
     
      ctx.body = {
     
        code: -200,
        message: "账号或密码错误"
      }
    }
  }
}

module.exports = UserController;

2.路由router里写接口路径

app/router.js

module.exports = app => {
     
  const {
     
    router,
    controller
  } = app;
   //用户登录接口
  router.post('/user/login', controller.user.login);  //调用控制器里home文件中的login方法
 }

三.请求login接口

我这里用postman来请求刚刚写好的login接口

请求地址: http://127.0.0.1:7001/user/login

请求参数:{userName : " " , password : " " }

egg.js登录获取token验证信息 (egg-jwt)_第1张图片
输入正确的账号密码,返回了token,接下来就能用拿到的token做请求验证了

egg.js登录获取token验证信息 (egg-jwt)_第2张图片
错误的输入对应返回定义的数据

下一篇:egg.js配合mysql的token验证请求进阶

你可能感兴趣的:(Node.js学习到实战,jwt,nodejs,tokenization)