1.我想实现的是,用户有自己的token,管理员有自己的token
2.后端实现
3.配置
4.路由配置
5.然后就报错了
这个能够实现吗?该怎么实现呢?
是的,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 中
});
在上面的示例中,我们使用了两个不同的密钥(secret1
和 secret2
),分别用于 /route1
和 /route2
路由中的 JWT Token 验证。
除了密钥,你还可以通过其他选项来进行 Token 验证,例如设置有效期(expiresIn
)、指定算法(algorithm
)等等。在需要验证多个不同类型的 Token 时,你可以根据实际需求设置不同的选项。
需要注意的是,为了安全起见,建议不要在代码中明文存储密钥,而是通过环境变量或其他安全的方式来获取密钥。