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

一.安装和配置

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验证请求进阶

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在 Node.js 中,可以使用 jsonwebtoken 模块来生成和验证 JWT(JSON Web Tokens)。 首先需要安装 jsonwebtoken 模块,可以使用 npm 命令进行安装: ``` npm install jsonwebtoken ``` 接着,使用以下代码生成 token: ```javascript const jwt = require('jsonwebtoken'); const payload = { id: '123', username: 'john.doe', role: 'admin' }; const secret = 'mysecretkey'; const token = jwt.sign(payload, secret, { expiresIn: '1h' }); console.log(token); ``` 在这个例子中,`payload` 是一个对象,包含要传递给客户端的数据。`secret` 是一个字符串,用于对 token 进行加密。`expiresIn` 是一个可选的参数,用于设置 token 的有效期。 接下来,可以使用以下代码验证 token: ```javascript const jwt = require('jsonwebtoken'); const secret = 'mysecretkey'; const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEyMyIsInVzZXJuYW1lIjoiam9obi5kb2UiLCJyb2xlIjoiYWRtaW4iLCJleHAiOjE2MjM5NzY5MTB9.9z9WZ1tjKg2x2PdMkL8OyNz5cV7Kj1zZS5a5Ngf0Ku4'; jwt.verify(token, secret, (err, decoded) => { if (err) { console.error(err); } else { console.log(decoded); } }); ``` 在这个例子中,`token` 是要验证token 字符串。`jwt.verify()` 方法会将 token 解密,并验证签名和有效期。如果验证成功,`decoded` 参数将包含解密后的数据。 需要注意的是,token 中的数据是可以被解密的,因此不应该在其中包含敏感信息。只有在经过验证后,才能信任其中的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值