我有一个这样的帖子
app.post('/auth', passport.initialize(), passport.authenticate('local', { session: false,scope: [] }), serialize, generateToken, respond);
这是正常的。
现在我已将上面的帖子作为一个函数并从不同的页面调用
accesstokenController.auth = function(req, res) {
console.log('Here auth called');
passport.initialize(), passport.authenticate(
'local', {
session: false,
scope: []
}), serialize, generateToken, respond
};
并从不同的路径页面调用此方法。
这不起作用意味着没有调用passport.intialize()或者passport.authenticate
路由器调用方法
var oauth = require("../oauth/accesstoken");
router.post('/auth', function(req, res) {
oauth.auth(req, res);
});
那里有什么问题
由于
答案 0 :(得分:0)
参见明确的参考资料 app.method 和 passing middleware arguments
您可以导出一系列处理函数,如下所示:
// ./oauth.js
exports.init = [
// express_session({secret: 'use express-session if you like'),
// passport.session(),
passport.initialize()
];
exports.login = [
passport.authenticate('local', options),
serialize,
generateToken,
(req, res) => res.send('you are logged in')
];
并在您的应用/路由器中使用它们:
// ./app.js
const auth = require('./oauth');
app.use(auth.init);
app.post('/login', auth.login);
要关注passport docs,
你应该配置模块并用passport.initalize
app.use
(一个函数返回一个快速中间件函数,因此括号)