使用Passport JWT策略,我正在通过params
传递令牌,并像这样ExtractJWT.fromUrlQueryParameter('secret_token')
提取令牌。
但是有时候我会通过header
传递令牌,我想像这样ExtractJWT.fromHeader('secret_token')
提取它。
如何检查其传递方式并动态使用正确的提取方法。
这是我的代码:
passport.use(new JWTstrategy({
secretOrKey: process.env.AUTH_SECRET,
jwtFromRequest: ExtractJWT.fromUrlQueryParameter('secret_token')
}, async (token, done) => {
try {
//Pass the user details to the next middleware
return done(null, token.user);
} catch (error) {
done(error);
}
}));
谢谢!我在这上呆了很长时间......
答案 0 :(得分:0)
尝试这种方式:
$keyword = "ios-developer-jobs-in-noida";
$city = substr(str, (-1)*strrpos($keyword, "-"))
答案 1 :(得分:0)
答案:
我认为无法使用ExtractJWT.fromUrlQueryParameter
等以常规方式完成此操作。
这是一种解决方法...
它将查找名称为query params
的{{1}}或headers
。
secret_token
答案 2 :(得分:0)
使用 ExtractJwt.fromExtractors()方法
var jwtStrategy = new JwtStrategy({
// this will try to extract from Query parm, header and Authheader
jwtFromRequest: ExtractJwt.fromExtractors([ExtractJwt.fromUrlQueryParameter("secret_token"), ExtractJwt.fromHeader("secret_token"), ExtractJwt.fromAuthHeaderAsBearerToken()]),
//here we have defined all possible extractors in an array
secretOrKey: process.env.AUTH_SECRET
}, async (payload, done) => {
...
});