繁体   English   中英

Passport jwt 返回未授权状态码 401

[英]Passport jwt returns unauthorized with status code 401

护照.js

module.exports = (passport) => {
passport.use(new LocalStrategy({
    usernameField: 'username',
    passwordField: 'password'
},
    (username, password, done) => {
        user.findOne(({ username: username }), async (err, user) => {
            if (err) { return done(err); }
            if (!user) { return done(null, false); }
            const cpassword = await bcrypt.compare(password, user.password);
            if (!cpassword) { return done(null, false); }
            console.log(user._id)
            const token = jwt.sign(
                {
                    id: user._id,
                    username: user.username
                },
                "shubham"
            );
            adminRecords = {
                token: token
            }

            return done(null, user, adminRecords);
        });
    }
));
passport.use(new JwtStrategy({
    jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
    secretOrKey   : 'key'
}, function(jwt_payload, done) {
    console.log('1')
    user.findOne({id: jwt_payload.sub}, function(err, user) {
        if (err) {
            return done(err, false);
        }
        if (user) {
            return done(null, user);
        } else {
            return done(null, false);
            // or you could create a new account
        }
    });
 }));
};

passport.serializeUser(function (user, done) {
 done(null, user)
})

passport.deserializeUser(function (id, done) {
 user.find(id, function (err, user) {
    done(err, user)
 });
}); 

路由.js

router.post('/profile', passport.authenticate('jwt', { session: false }),
function(req, res) {
    console.log('1')
    res.send(req.user.profile);
 }
);

我正在尝试 passport-jwt 策略,它在生成令牌时返回未授权状态码 401。 我正在使用令牌 x-access-token=jwtToken 但它返回未经授权。

我可以尝试调试什么?

尝试在 header 中设置

授权:Bearer TOKEN

你应该在令牌和不记名之间有空间

替换 jwtFromRequest: 如下并尝试

jwtFromRequest:ExtractJwt.fromAuthHeaderWithScheme('JWT');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM