express-jwt能实现两个不同的token验证吗

1.我想实现的是,用户有自己的token,管理员有自己的token
2.后端实现

img

img

3.配置

img

4.路由配置

img

5.然后就报错了

img

这个能够实现吗?该怎么实现呢?

是的,express-jwt 可以实现两个或多个不同的 JWT Token 验证。

express-jwt 是一个基于 JWT Token 的身份验证中间件,它提供了一个 jwt() 函数,可以用于验证请求头中的 JWT Token。

为了实现多个不同的 Token 验证,你可以在不同的路由中使用不同的密钥(secret)和选项(options)来验证不同类型的 Token。具体来说,你可以在调用 jwt() 函数时,通过传递参数来指定不同的密钥和选项,例如:

const jwt = require('express-jwt');

const secret1 = 'mysecret1';
const secret2 = 'mysecret2';

app.get('/route1', jwt({ secret: secret1 }), (req, res) => {
  // 这里验证 secret1 对应的 Token
  // 如果验证通过,中间件会将解码后的 Token 存储在 req.user 中
});

app.get('/route2', jwt({ secret: secret2 }), (req, res) => {
  // 这里验证 secret2 对应的 Token
  // 如果验证通过,中间件会将解码后的 Token 存储在 req.user 中
});

在上面的示例中,我们使用了两个不同的密钥(secret1secret2),分别用于 /route1/route2 路由中的 JWT Token 验证。

除了密钥,你还可以通过其他选项来进行 Token 验证,例如设置有效期(expiresIn)、指定算法(algorithm)等等。在需要验证多个不同类型的 Token 时,你可以根据实际需求设置不同的选项。

需要注意的是,为了安全起见,建议不要在代码中明文存储密钥,而是通过环境变量或其他安全的方式来获取密钥。