gpt4 book ai didi

node.js - Passport JWT : req. 用户始终未经授权

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:05 25 4
gpt4 key购买 nike

我在堆栈溢出上搜索了类似的问题,但其中任何一个都不适合我,所以我再次问这个问题。

我正在使用passport-jwtexpress

I want to get logged in user id , to store it in other model. but every time I get 401 Unauthorized

这里是helpers/passport.js

const options = {};
options.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();

options.secretOrKey = configuration.secret_key.JWTsecretkey;

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

这里是server.js

global.express = require('express');
global.app = express();
global.passport = require('passport');
global.jwt = require('jsonwebtoken');
global.JwtStrategy = require('passport-jwt').Strategy;
global.ExtractJwt = require('passport-jwt').ExtractJwt;
global.requireTree = require('require-tree')
global.controllers = requireTree(rootdir+'/controllers')
global.routes=requireTree(rootdir+'/routes')
global.helpers = requireTree(rootdir + '/helpers')

app.use(passport.initialize())
require(rootdir+'/helpers/passport')(passport)

app.use('/api/auth',routes.api.auth);

app.listen(8888)

routes/api/auth.js

 const router=express.Router();

router.get('/user', passport.authenticate('jwt', { session: false }),controllers.auth.user);
module.exports =router

controllers/auth/user.js

module.exports=(req,res)=>{
res.json({
user:req.user
});
}

当我尝试使用 postman 但不起作用时。

enter image description here

我也尝试过:ExtractJwt.fromAuthHeaderWithScheme('jwt') 因为它在某些问题上得到了赞成,但它不起作用。

我正在使用

"passport": "^0.4.0" , "passport-jwt": "^4.0.0" ,
"jsonwebtoken": "^8.3.0"

请帮我解决这个问题。

最佳答案

I have solved above errors by replacing User.findById(jwt_payload.id) with
User.findById(jwt_payload._id)

这里更新了passport.js

const options = {};
options.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
options.secretOrKey = configuration.secret_key.JWTsecretkey;

module.exports = passport => {
passport.use(
new JwtStrategy(options, (jwt_payload, done) => {
console.log('jwt_payload ==',jwt_payload);
User.findById(jwt_payload._id)
.then(user => {
if (user) {
return done(null, user);
}
return done(null, false);
})
.catch(err => {
console.log(err);
return done(err, false);
});
})
);
};

关于node.js - Passport JWT : req. 用户始终未经授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52699996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com