首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Passport-jwt不同令牌相同的结果

Passport-jwt不同令牌相同的结果
EN

Stack Overflow用户
提问于 2016-10-07 04:52:12
回答 3查看 396关注 0票数 2

我在使用passport和jwt设置我的第一个项目时遇到了问题。使用Postman时,我尝试使用不同的帐户登录,但如果我尝试返回req.user对象,它将返回同一用户的信息。否则,如果我尝试登录jwt_payload,它是正确的(不同用户的信息)。有人能给我解释一下原因吗?(我插入选项session: false)

我的jwt策略函数:

代码语言:javascript
复制
var confStrategy = function(passport) {
  passport.use( new JwtStrategy( opts, function(jwt_payload,done) {
      User.findOne({id: jwt_payload.sub},function(err,user) {

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

app.js代码片段

代码语言:javascript
复制
app.use(passport.initialize());
passConf.confStrategy(passport);

app.get('/api/:name',passport.authenticate('jwt', { session: false }),function(req,res) {
  console.log(req.user);
  res.send('Hello ' + req.user.email);
});
EN

回答 3

Stack Overflow用户

发布于 2016-12-08 04:27:47

在passport中间件中,编辑JwtStrategy

发自:

代码语言:javascript
复制
{id: jwt_payload.sub}

至:

代码语言:javascript
复制
{_id: jwt_payload._doc._id}
票数 0
EN

Stack Overflow用户

发布于 2017-02-10 05:57:46

我也遇到了同样的问题!下面的代码对我很有效。

代码语言:javascript
复制
module.exports = function(passport) {  ;
passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
 User.findById(jwt_payload._id, function(err, user) {
  if (err) {
    return done(err, false);
  }
    if (user) {
      done(null, user);
    } else {
      done(null, false);
    }
  });
 }));
};

问题出在User.findOne({id: jwt_payload.sub},...

票数 0
EN

Stack Overflow用户

发布于 2017-06-07 23:07:18

您需要检查生成JWT令牌的代码,无论您在JWT生成期间设置了什么有效负载。当JWTStrategy解码的时候,你会得到相同的有效载荷和相同的名字。(因为你每次都得到相同的用户,所以检查它是否是硬编码的)

下面的行将生成JWT令牌

代码语言:javascript
复制
var token = jwt.sign({uid: user.id}, secretOrKey, {expiresIn: 6000});

下面是JWT策略代码。

代码语言:javascript
复制
passport.use(new JwtStrategy(jwtOptions, function(_payload, _next) {
  var done = false;
  if((_payload.uid)) {
   //Do something 
  }
}));

您需要保持名称不变(在上面的例子中是uid)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39905418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档