【问题标题】:Passport-jwt UnauthorizedPassport-jwt 未经授权
【发布时间】:2018-02-02 04:01:14
【问题描述】:

我是节点 js 的新手。我正在使用护照 jwt 进行身份验证。当我尝试进行身份验证时,它总是显示“未经授权”。

我的 passport.js 文件

const JwtStrategy = require('passport-jwt').Strategy;
const ExtractJwt = require('passport-jwt').ExtractJwt;
const User = require('../models/user');
const config = require('../config/database');

module.exports = function(passport){
  let opts = {};
  opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
  opts.secretOrKey = config.secret;
  passport.use(new JwtStrategy(opts, (jwt_payload, done) => {

    User.getUserById(jwt_payload._doc._id, (err, user) => {
      if(err){
        return done(err, false);
      }

      if(user){
        return done(null, user);
      } else {
        return done(null, false);
      }
    });
  }));
}

用户模型 user.js

module.exports.getUserById = function(id, callback){
  User.findById(id, callback);
}

路线

router.get('/profile', passport.authenticate('jwt', {session:false}), (req, res, next) => {
  res.json({user: req.user});
});

当我用谷歌搜索时,很多人建议在 passport.js 中更改这一行

User.getUserById(jwt_payload._doc._id, (err, user) => {

我试过了

User.getUserById(jwt_payload._id, (err, user) => {
User.findById(jwt_payload._id, (err, user) => {

现在我仍然遇到同样的错误。

【问题讨论】:

标签: node.js jwt passport.js


【解决方案1】:

我发现了问题, 在新的 passport-jwt 更新中,我们必须使用

opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt');

【讨论】:

  • 我正在做同样的事情并提出了建议的更改,但仍然未经授权。这里是我的代码的链接link
  • @cacev000,检查你的jwt_payload console.log('test',jwt_payload); User.getUserById(jwt_payload.data._id, (err, user) => {.,有时你的_id 在jwt_payload.doc._id
【解决方案2】:

如果您使用opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken(); 作为您的jwtFromRequest,那么您的 Authorization 标头就像

承载者 xxxxx.yyyyy.zzzzz

您可以检查位于passport-jwt/lib 文件夹中的extract_jwt.js 中指定的BEARER_AUTH_SCHEME


如果您使用opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt') 作为您的jwtFromRequest,那么您的 Authorization 标头就像

JWT xxxxx.yyyyy.zzzzz

您可以查看位于passport-jwt/lib 文件夹中的extract_jwt.js 中指定的LEGACY_AUTH_SCHEME

【讨论】:

    猜你喜欢
    • 2017-01-12
    • 2018-11-05
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 2018-03-18
    • 2018-06-06
    • 2021-09-21
    • 2021-06-08
    相关资源
    最近更新 更多