Нужно ли искать пользователя в базе данных, если я включаю все в полезную нагрузку jwt? - PullRequest
0 голосов
/ 10 мая 2019

Я использую JSON Web Tokens и пакет passport-jwt.

const payload = {
     id: this.id,
     name: this.name,
     email: this.email,
     avatar: this.avatar,
     isAdmin: this.isAdmin
};

JWT.sign( payload, keys.secretOrKey, {
      algorithm: 'HS256',
      expiresIn: this.expiresIn,
      jwtid: await this.getJwtId()
});

и внутри промежуточного программного обеспечения

module.exports = ( passport ) => {
    passport.use( 
        new JwtStrategy( options, async ( jwt_payload, done ) => {  
            User.findById( jwt_payload.id ).then( ( user ) => {
                if ( user ) { 
                    return done( null, user );
                } else {
                    return done( null, false );
                }
            });
        })
    );
};

Могу ли я пропустить User.findById и использовать только jwt_payload ?

Примерно так:

module.exports = ( passport ) => {
    passport.use( 
        new JwtStrategy( options, ( jwt_payload, done ) => {    
            return done( null, jwt_payload );
        })
    );
};
...