【发布时间】: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) => {
现在我仍然遇到同样的错误。
【问题讨论】:
-
参考此链接stackoverflow.com/a/45750615/7635845.This 是我的答案。希望这会有所帮助。如果有帮助,请点赞。否则,如果您有任何疑问,请告诉我。
标签: node.js jwt passport.js