单点登录:WP_AUTHENTICATE_USER与WP_AUTHENTICATE

时间:2015-04-09 作者:Omer Greenwald

我有一个wordpress站点(我们称之为site1)和另一个oauth2站点(site2)。

创建新用户时,将在site1和site2数据库中创建一条记录,其中包含与用户名相同的电子邮件、在site2数据库中散列的键入密码以及site1数据库的伪密码(例如“pass”)。然后,登录操作使用RESTfull API对site2数据库进行身份验证。如果身份验证成功,我希望以编程方式将用户登录到site1(wordpress),如果不成功,则应将错误对象注入site1。

我的问题是,wp\\u authenticate\\u user还是wp\\u authenticate,哪个wordpress过滤器更适合这个应用程序,wp\\u signon应该放在哪里?

1 个回复
SO网友:DesmondCampbell

我目前正在开发一个插件来大规模实现这一点,因为我有多个要同步的站点;但我不介意和你分享这些信息。

我(从您所说的)了解到,用户的凭据已经在site2上进行了验证,因此无需使用任何这些函数来再次验证它们。您现在需要做的就是在WordPress站点上创建会话。

这意味着您要查找的函数是wp_set_auth_cookie. 它将创建用户会话,而不需要凭据。该函数将用户ID作为第一个参数,这是最重要的,您可以在WordPress启动之前启动它(比如在functions.php文件的顶部)。

如果您想通过web服务实现这一点,出于安全原因,我建议您使用两阶段流程。首先,可以将用户ID推送到存储“经过身份验证的会话”的表中,用唯一的会话ID(某种形式的哈希、IP、用户代理等)标识用户。在第二阶段,您可以在same person 访问WP网站。

另一个选项是在site2上创建会话代码,然后将用户发送到站点1,并将该代码放在手中(query\\u string或form post)。当他们到达site1时,将使用对site2的回调来验证它,然后使用上面的函数简单地创建会话。

结束

相关推荐

Esc_html__security:在本例中用于什么?

如何esc_html__ (第二个)保护$message 被黑客攻击的变量?在这里使用这种保护有什么意义(第二种是纯文本保护)?<?php function unknown(){ /* If the user input any text, escape it. */ if ( !empty ( $_POST[\'unknown\'] ) ) $message = esc_html ( $_POST[\'unknow