【发布时间】:2020-12-10 21:12:27
【问题描述】:
每当我启动我的 nodemon 时,错误都会显示如下:
C:\lazystud\ravenwebAPI\node_modules\passport\lib\authenticator.js:56
if (!name) { throw new Error('Authentication strategies must have a name'); }
^
Error: Authentication strategies must have a name
at Authenticator.use (C:\lazystud\ravenwebAPI\node_modules\passport\lib\authenticator.js:56:22)
at Object.<anonymous> (C:\lazystud\ravenwebAPI\server.js:20:10)
at Module._compile (internal/modules/cjs/loader.js:1137:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
at Module.load (internal/modules/cjs/loader.js:985:32)
at Function.Module._load (internal/modules/cjs/loader.js:878:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
[nodemon] app crashed - waiting for file changes before starting...
passport.js代码:
var { getUserByUserId } = require('../models/studentModel');
var JwtStrategy = require('passport-jwt').Strategy,
ExtractJwt = require('passport-jwt').ExtractJwt;
var config = require('../config/config');
var opts = {
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken('Authorization'),
secretOrKey: config.jwtSecret
};
module.exports = function(passport){
passport.use(new JwtStrategy(opts, function (jwt_payload, done){
console.log("in one");
getUserByUserId(jwt_payload.result.student_id, function (err, user) {
if (err) {
console.log("In iff");
return done(err, false);
}
if (user) {
console.log(user);
console.log("in user");
passport.serializeUser(function (user, done) {
done(null, user);
});
passport.deserializeUser(function (user, done) {
done(null, user);
});
return done(null, user);
} else {
console.log("In user else");
return done(null, false);
}
});
}
));
};
userRoute.js代码:
router.get('/:id', passport.authenticate( { session: true }), function(req, res) {
console.log("In get by id route");
studentController.getUserByUserId(req, res);
});
server.js代码:
const app = express();
var passport = require('passport');
app.use(passport.initialize());
var passportMiddleware = require('./middleware/passport');
passport.use(passportMiddleware);
【问题讨论】:
标签: javascript node.js express jwt passport.js