eggjs 怎么使用 egg-jwt 实现 token 解析?

简介: eggjs 怎么使用 egg-jwt 实现 token 解析?

问题


我们访问某个接口的时候,带上 token 请求时,如何在服务端解析出 token 内的信息。上一篇我们实现了登录功能,生成了 token 返回到客户端,下面就来实现一下,客户端返回 token 时,服务端应该怎么解析



实现


1、参考 egg-jwt 写法

可以参考一下:https://github.com/okoala/egg-jwt/blob/master/test/jwt.test.js#L36


22bc5f7d65c7472f88341101f636b645.png



2、方法实现

我们在 /controller/user.js 中,新增一个验证方法 getTokenInfo 的方法


  1. 获取请求头 authorization 属性,值为 token
  2. 用 app.jwt.verify(token, app.config.jwt.secret),解析出 token 的值
  // 测试 解析 token
async getTokenInfo() {
  const { ctx, app } = this;
  // 1. 获取请求头 authorization 属性,值为 token
  const token = ctx.request.header.authorization;
  // 2. 用 app.jwt.verify(token, app.config.jwt.secret),解析出 token 的值
  const decode = await app.jwt.verify(token, app.config.jwt.secret);
  // 返回 token
  ctx.body = {
    status: 200,
    desc: '获取成功',
    data: { ...decode }
  };
}


3、路由配置

'use strict';
/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
  const { router, controller } = app;
  // 注册路由
  router.post('/api/user/register', controller.user.register);
  // 登录路由
  router.post('/api/user/login', controller.user.login);
  // 测试 token 解析
  router.get('/api/user/token', controller.user.getTokenInfo);
};


4、测试接口

我用 Apifox 测试一下,流程如下:


1、新建接口

2ae17e7e77754b7ab7d480ce4e57844c.png



2、配置好接口信息,保存

96a70204790d47289a0e3a657831a0e7.png


3、先调用登录接口拿到 token


9826046480a64e87a9acb70a0c17dc91.png


4、然后将 token 放到测试接口的头部参数里


c599432b5bcd480ea2daa9fb9298f2de.png

{
    "status": 200,
    "desc": "获取成功",
    "data": {
        "id": 5,
        "username": "kaimo313",
        "exp": 1642668827,
        "iat": 1642582427
    }
}


这样我们接解析 token 成功了。

目录
相关文章
|
7月前
|
JSON 算法 Go
Golang语言使用 jwt-go 库生成和解析 token
Golang语言使用 jwt-go 库生成和解析 token
203 0
|
4月前
|
存储 安全 Java
Spring Security中Token存储与会话管理:解析与实践
Spring Security中Token存储与会话管理:解析与实践
98 0
|
存储 安全 Java
Spring Security Oauth2 之 密码模式请求/oauth/token 解析
前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger 种一棵树最好的时间是十年前,其次是现在
1311 0
|
9月前
在线JWT Token解析解码工具
在线JWT Token解析解码工具
603 0
|
10月前
|
存储 安全 搜索推荐
php对接百度网盘开发平台API开发高级实战案例解析:(环境部署、php封装类、Access Token获取、预上传、分片上传)
php对接百度网盘开发平台API开发高级实战案例解析:(环境部署、php封装类、Access Token获取、预上传、分片上传)
482 0
EMQ
|
10月前
|
JSON 安全 算法
深入解析 MQTT 中基于 Token 的认证和 OAuth 2.0
本文将深入了解基于 Token 的认证和 OAuth 2.0,阐述它们的原理并展示它们在 MQTT 中的应用。
EMQ
257 0
深入解析 MQTT 中基于 Token 的认证和 OAuth 2.0
|
10月前
|
存储 消息中间件 NoSQL
如何设置token有效期【5个应用场景分析+双token实现解析】
如何设置token有效期【5个应用场景分析+双token实现解析】
|
12月前
|
数据库 Python
django drf 实现只有超级用户才能注册账号(涉及自定义权限permissions,获取token信息解析token信息)
django drf 实现只有超级用户才能注册账号(涉及自定义权限permissions,获取token信息解析token信息)
|
NoSQL 安全 Java
JWT如何解析过期的token中的信息
JWT如何解析过期的token中的信息
1039 0
JWT如何解析过期的token中的信息
|
JSON 数据格式
SAP UI5 应用读取 CSRF token 的 HTTP head 请求逻辑解析
SAP UI5 应用读取 CSRF token 的 HTTP head 请求逻辑解析
144 0
SAP UI5 应用读取 CSRF token 的 HTTP head 请求逻辑解析

推荐镜像

更多