【问题标题】:passport token is not being authorized护照令牌未被授权
【发布时间】:2019-08-13 10:32:22
【问题描述】:
const JwtStrategy = require('passport-jwt').Strategy,
    ExtractJwt = require('passport-jwt').ExtractJwt;
const User = require('../models/User');
const key = require('./keys').secret;
const mongoose = require('mongoose');

var opts = {}
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
opts.secretOrKey = key;

module.exports = (passport) => {
passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
    console.log(jwt_payload);
    User.findById(jwt_payload.id, function(err, user) {
        if (err) {
            return done(err, false);
        }
        if (user) {
            return done(null, user);
        } else {
            return done(null, false);

        }
    });
}))
}

我正在使用 passport-jwt 策略使用令牌进行验证,但这是文件运行不正常我什至尝试在此处控制有效负载,但这甚至没有记录它

 passport.use(new JwtStrategy(opts, function(jwt_payload, done) 
 console.log(jwt_payload);

代币策略

 const payload = {
                    id: user.id,
                    username: user.username,
                    name: user.name
                }
                const token = jwt.sign(payload, config.secret, { expiresIn: 36000 });
                return res.json({
                    success: true,
                    token: 'JWT ' + token,
                    user: {
                        id: user.id,
                        name: user.name,
                        username: user.username
                    }
                })

当我在受保护的路由上使用它时,它没有授权受保护的路由

结果 = 未经授权

router.get('/profile', passport.authenticate('jwt', { session: false }), (req, res) => {
res.send("Profile");
});

【问题讨论】:

  • 你能展示你发送到服务器的请求示例吗?
  • 我正在使用带有 Key = Authorization 和 value = json 返回的令牌的邮递员

标签: node.js express jwt authorization passport.js


【解决方案1】:

您的身份验证不起作用的原因是您使用了旧令牌前缀“JWT”和现代 JWT (fromAuthHeaderAsBearerToken) 提取器作为策略的一个选项。

您可以执行以下步骤之一来解决问题:

  1. 将令牌前缀更改为'Bearer ' + token
  2. 更改令牌提取器:

    opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme("JWT");

【讨论】:

    猜你喜欢
    • 2018-04-11
    • 2018-03-18
    • 2019-05-12
    • 2018-02-04
    • 2019-10-31
    • 2017-04-09
    • 2017-10-05
    • 2020-03-08
    • 2019-02-01
    相关资源
    最近更新 更多