passport-jwt возвращается неавторизованным, когда я захожу на страницу / admin в моем веб-приложении - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь войти в систему с использованием паспорта и токена jwt. Мне удается сгенерировать токен jwt, но когда я захожу на страницу / admin, набрав в браузере, я получаю неавторизованное сообщение. Я прочитал все ответы здесь, но они не помогают мне.

Мой файл passport.js

try {
    passport.use('signin', new LocalStrategy(
        function(username, password, done) {
            Users.findOne({username: username}, (err, user) => {
                if (err) { return(err)}
                if(!user) { return done(null, false, { message: 'Incorrect username.' })}
                if (!checkUser(password, user.password)) { return done(null, false, { message: 'Incorrect username.' }); }
                return done(null, user);
            });
        }
    ))
} catch (error) {
    return done(error);
}

passport.use(new JWTstrategy({
    secretOrKey: config.get('jwt.tokenKey'),
    jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken()
}, async(token, done) => {
    try {
        return done(null, token.user);
    } catch (err){
        done(err);
    }
}))

Мой файл контроллера входа в систему: -

router.post('/', (req, res) => {

    passport.authenticate('signin', {session:false}, async(err,user,info) => {
        try {
            if (err || !user) {
                console.log(err);
            }

            req.login(user, {session:false}, err => {
                if (err) res.send(err);

                const body = { username: user.username};

                const token = jwt.sign( {user:body}, config.get('jwt.tokenKey'));
                res.json({ success: true, 
                    token: 'Bearer ' + token });
            });
        } catch (error) {
            return next(error);
        }
    })(req, res);
})

Файл моей страницы администратора: -

router.get('/',  passport.authenticate('jwt', { session: false }), function (req,res) {
    res.render('./../views/admin/admin.pug');
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...