【问题标题】:Authenticate requests in node.js against Wordpress针对 Wordpress 验证 node.js 中的请求
【发布时间】:2014-04-01 22:59:49
【问题描述】:

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

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

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

我正在努力解决这个问题,如果有任何帮助,我将不胜感激。

【问题讨论】:

    标签: javascript php wordpress node.js authentication


    【解决方案1】:

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

    passport 和 passport-wordpress 都可以通过 npm 包管理器安装。之后,如果您的节点应用程序是 express.js 应用程序,您可以使用 passport.authorize() route-middleware 方法对每个请求进行身份验证。来自passport-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 的策略(以 expressjs 为例):

    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 应用程序如何协同工作以及您在节点上使用的框架类型。 js端。

    【讨论】:

    • 嗨,我正在尝试创建一个基于 CLI 的 wordpress 登录,然后我将如何使用 passport.authorize,因为我没有使用 Express
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2017-12-06
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 2015-07-02
    相关资源
    最近更新 更多