// JWT generation script adapted from // https://gist.github.com/corbanb/db03150abbe899285d6a86cc480f674d var appKey = 'cms自动化测试-online'; var appSecret = 'Nj8MmpI3QBQzr1UibCCgPhNaJXnOpqn8FR+kStbOTMw'; // Set headers for JWT var header = { 'typ': 'JWT', 'alg': 'HS256' }; // Prepare timestamp in seconds var currentTimestamp = Math.floor(Date.now() / 1000) var data = { "app_key": appKey, 'iat': currentTimestamp, 'exp': currentTimestamp + 30 // expiry time is 30 seconds from time of creation } function base64url(source) { // Encode in classical base64 encodedSource = CryptoJS.enc.Base64.stringify(source) // Remove padding equal characters encodedSource = encodedSource.replace(/=+$/, '') // Replace characters according to base64url specifications encodedSource = encodedSource.replace(/\+/g, '-') encodedSource = encodedSource.replace(/\//g, '_') return encodedSource } // encode header var stringifiedHeader = CryptoJS.enc.Utf8.parse(JSON.stringify(header)) var encodedHeader = base64url(stringifiedHeader) // encode data var stringifiedData = CryptoJS.enc.Utf8.parse(JSON.stringify(data)) var encodedData = base64url(stringifiedData) // build token var token = `${encodedHeader}.${encodedData}` // sign token var signature = CryptoJS.HmacSHA256(token, appSecret) signature = base64url(signature) var signedToken = `${token}.${signature}` console.log('Signed and non-encoded JWT', signedToken) pm.globals.set("signedToken",signedToken);
时间: 2024-04-11 13:30:09 浏览: 15
这段代码与之前的Python代码功能相同,用于生成JWT。代码片段首先定义了一些变量,包括应用程序的密钥和密钥。然后,它创建了一个包含当前时间戳和其他数据的对象。接下来,它将头部和数据部分转换为JSON字符串,并对其进行Base64编码。然后,它将编码后的头部和数据拼接起来,并使用应用程序密钥对其进行HMAC-SHA256签名。最后,它将签名编码并将其附加到令牌末尾,得到最终的JWT。最后,它使用console.log输出签名和非编码的JWT,并将其存储在Postman的全局变量中。
相关问题
gin-jwt/v2 与 "github.com/golang-jwt/jwt/v4" 使用jwt 冲突
gin-jwt/v2 和 "github.com/golang-jwt/jwt/v4" 都是 Go 语言中用于处理 JSON Web Token (JWT) 的库,它们之间可能存在一些使用上的冲突。
gin-jwt/v2 是一个专门为 Gin 框架设计的 JWT 中间件,它提供了一些方便的功能来验证和生成 JWT。它使用了 "github.com/dgrijalva/jwt-go" 这个库来处理 JWT 的生成和验证。
而 "github.com/golang-jwt/jwt/v4" 是一个通用的 JWT 库,它提供了一些基本的功能来生成和验证 JWT。它是由 Go 官方团队维护的,相对来说更加稳定和可靠。
由于这两个库都涉及到 JWT 的生成和验证,所以在使用时可能会存在一些冲突。例如,可能会出现导入冲突或者函数命名冲突的情况。
为了解决这个问题,你可以考虑以下几种方法:
1. 使用不同的别名导入库:可以给其中一个库起一个别名,以避免导入冲突。
2. 手动处理 JWT:如果你只需要基本的 JWT 功能,你也可以选择手动处理 JWT,而不使用这两个库中的任何一个。
项目源码:https://github.com/seth-shi/monday-shop
谢谢你提供这个项目的源码链接。我看了一下,这是一个基于 Django 和 Vue.js 开发的电商网站。它包含了用户注册、商品展示、购物车、订单管理等功能。
我注意到这个项目使用了 Django REST framework 来实现 API,并使用了 JWT 来进行用户身份验证。前端使用了 Vue.js 和 Element UI 框架,实现了页面的动态渲染和交互。
总体来说,这个项目的代码结构清晰,注释详细,非常适合学习和参考。