目前我正在尝试在面向对象的 Node.js 服务器中使用中间件“passport”。重新启动服务器后一切正常。我可以访问不需要身份验证的路由。但是当我尝试通过身份验证访问路由时,我总是得到响应 401(无身份验证)。这似乎没问题,但不幸的是我没有在 LocalStrategy 中输入函数(用户名、密码、完成)。
所以我认为我的问题在于我尝试使用 oo javascript 样式的中间件的方式。我开始使用的模板来自 RedHat OpenShift Cloud,可以在以下位置看到:https ://github.com/openshift/nodejs-custom-version-openshift/blob/master/server.js
这是我尝试使用护照中间件的服务器初始化方法:
self.initializeServer = function() {
self.createGetRoutes();
self.createPostRoutes();
self.app = express.create();
passport.use(new LocalStrategy(
function(username, password, done) {
console.log("TEST");
process.nextTick(function () {
console.log('Here I am!');
return done(null, user);
});
}
));
self.app.configure(function() {
self.app.use(passport.initialize());
});
// Paths without authentication
self.app.get('/holy', function(req, res) {res.send('SHIT! \n')});
// Add GET handlers for the app with authentication (from the getRoutes).
for (var g in self.getRoutes) {
self.app.get(g, passport.authenticate('local', { session: false }), self.getRoutes[g]);
}
// Add POST handlers for the app with authentication (from the postRoutes).
for (var p in self.postRoutes) {
self.app.post(p, passport.authenticate('local', { session: false }), self.postRoutes[p]);
}
};