2014-04-01 49 views
1

我有一个Wordpress站点和一个node.js应用程序,它们一起构成我正在构建的Web应用程序。我正在使用Node,因为socket.io和Wordpress有许多其他原因。无论哪种方式,我不能放弃wordpress或节点在node.js中针对Wordpress验证请求

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

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

我很努力地想要解决这个问题,并希望得到任何帮助。

回答

1

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

护照和passport-wordpress都可以通过npm包管理器安装。之后,如果您的节点应用程序是express.js应用程序,则可以使用passport.authorize()路由中间件方法验证每个请求的身份。从护照文档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应用程序一起工作,以及你在node.js端使用什么类型的框架。

+0

谢谢!护照似乎工作得很好。 – Johandk