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

本文档详细介绍了如何在Egg.js项目中配置和使用`egg-jwt`和`egg-cors`插件来实现登录接口,并生成及验证Token。首先,通过cnpm安装两个插件,然后在`plugin.js`和`config.default.js`中配置。接着,在控制器中编写登录接口,使用jwt生成Token,并设置过期时间。最后,通过Postman测试登录接口,成功获取Token。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.安装和配置

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 : " " }

在这里插入图片描述
输入正确的账号密码,返回了token,接下来就能用拿到的token做请求验证了

在这里插入图片描述
错误的输入对应返回定义的数据

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值