【发布时间】:2022-10-23 20:16:44
【问题描述】:
我主要将 Nextjs 用于我的前端,将 Java springboot 用于我的后端。但是我想使用 nextjs 中间件通过 JWT 保护我的路由。由于 jsonwebtoken 不能在边缘函数上运行,我正在使用 jose。
在尝试从 cookie 中获取 JWT 后,我尝试对其进行验证并收到以下消息:
JWSSignatureVerificationFailed:签名验证失败
这是我的令牌在 spring 后端的签名:
public static String generateJwtToken(AppUser user) {
Map<String, Object> claims = new HashMap<>();
return Jwts.builder()
.setClaims(claims)
.setSubject(user.getUsername())
.setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(new Date(System.currentTimeMillis() + TOKEN_VALIDITY * 1000))
.signWith(SignatureAlgorithm.HS512, jwtSecret)
.compact();
}
这是在我的 nextjs 中间件文件中验证它的尝试:
const token = request.cookies.get('jwt');
const { payload } = await jwtVerify(
token,
new TextEncoder().encode(process.env.SECRET_KEY)
);
注意: jwtSecret 和 SECRET_KEY 是来自完全相同的 .env 文件的完全相同的值。任何帮助将不胜感激
【问题讨论】:
标签: spring spring-boot next.js jwt