在针对Wordpress的node.js中验证请求

时间:2014-04-01 14:36:31

标签: javascript php wordpress node.js authentication

我有一个Wordpress站点和一个node.js应用程序,它们共同构成了我构建的Web应用程序。我因为socket.io和Wordpress而使用Node有很多其他原因。无论哪种方式,我都不能放弃wordpress或节点

我面临的问题是确保在向Node服务器发出请求时,通过wordpress登录的用户是有效用户。

我应该在wordpress身份验证过程中将会话信息推送到节点服务器并让它维护自己的会话吗?然后在对Node服务器的后续请求中使用它?

我正在努力解决这个问题并希望得到任何帮助。

1 个答案:

答案 0 :(得分:1)

查看passportjs这是node.js的身份验证模块,它提供了不同的身份验证策略(截至今天已超过140个)。幸运的是,有一个OAuth 2策略用于对wordpress进行身份验证。此策略的github页面位于here

护照和passport-wordpress都可以通过npm包管理器安装。然后,如果您的节点应用程序是express.js应用程序,则可以使用passport.authorize() route-middleware方法对每个请求进行身份验证。来自护照 - wordpress的文档:

定义策略。

passport.use(new WordpressStrategy({
    clientID: CLIENT_ID,
    clientSecret: CLIENT_SECRET
  },
  function(accessToken, refreshToken, profile, done) {
    User.findOrCreate({ WordpressId: profile.id }, function (err, user) {
      return done(err, user);
    });
  }
));

在您的路线中使用passport.authorize策略(表达快递的例子):

app.get('/auth/wordpress',
  passport.authorize('wordpress'));

app.get('/auth/wordpress/callback', 
  passport.authorize('wordpress', { failureRedirect: '/login' }),
  function(req, res) {
    // Successful authentication, redirect home.
    res.redirect('/');
  });

如果您不使用expressjs或者不想使用passportjs,请提供更多信息,了解您的wordpress安装和node.js应用程序如何协同工作以及您使用哪种框架。在node.js端重新使用。