我有一个 Wordpress 网站和一个 node.js 应用程序,它们共同构成了我正在构建的 Web 应用程序。我使用 Node 是因为 socket.io 和 Wordpress 还有很多其他原因。不管怎样,我不能删除 WordPress 或 Node
我面临的问题是确保通过 wordpress 登录的用户在向 Node 服务器发出请求时是有效用户。
我应该在 WordPress 身份验证过程中将 session 信息推送到 Node 服务器并让它维护自己的 session 吗?然后在对 Node 服务器的后续请求中就使用它?
我正在努力解决这个问题,希望得到任何帮助。
最佳答案
看看passportjs这是一个 Node.js 的身份验证模块,提供不同的身份验证策略(截至目前超过 140 种)。幸运的是,有一个 OAuth 2 策略用于针对 WordPress 进行身份验证。该策略的github页面位于here .
passport 和passport-wordpress 都可以通过npm 包管理器安装。之后,如果您的 Node 应用程序是 express.js,您可以使用 passport.authorize()
路由中间件方法对每个请求进行身份验证。应用。来自 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应用程序如何协同工作以及您在 Node 上使用哪种框架。 js 端。
关于javascript - 针对 Wordpress 对 Node.js 中的请求进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22789074/