我实现了passport-jwt来验证受保护路由上的用户,我还想在创建第一个管理员之前检查可能的用户登录,请帮助我如何做。这是我实现的passport-jwt代码
exports.getToken = function (user) {
return jwt.sign(user, config.secretKey, { expiresIn: 3600 });
};
var opts = {};
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
opts.secretOrKey = config.secretKey;
exports.jwtPassport = passport.use(
new JwtStrategy(opts, (jwt_payload, done) => {
console.log("JWT payload: ", jwt_payload);
User.findOne({ _id: jwt_payload._id, }, (err, user) => {
if (err) {
return done(err, false);
} else if (user) {
return done(null, user);
} else {
return done(null, false);
}
});
})
);发布于 2020-12-16 22:50:27
如果我正确理解了您的问题,您已经对用户进行了身份验证,并且该用户已登录。现在,在创建管理员之前,您需要检查当前登录的用户是否未过期或其他情况。对吧?
为此,请执行以下操作:
JWT您需要将存储在客户端,以便无论何时调用
ExtractJWT策略是fromAuthHeaderAsBearerToken.使用此选项,您可以将令牌附加到后续
Here是理解管道的一个很好的资源。请注意,在此资源中,他们将fromUrlQueryParameter作为提取策略,但概念是相同的。
https://stackoverflow.com/questions/65309394
复制相似问题