Ajax帖子的差异

时间:2018-05-28 09:07:11

标签: node.js ajax express authentication passport.js

我有一个这样的帖子

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);
});

那里有什么问题

由于

1 个答案:

答案 0 :(得分:0)

参见明确的参考资料 app.methodpassing 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(一个函数返回一个快速中间件函数,因此括号)