针对当前请求验证用户

时间:2019-02-22 作者:Gregor Müllegger

WordPress插件是否有办法对当前请求的用户进行身份验证?

我的计划是通过包含用户名和密码的HTTP头对用户进行身份验证。然后,应使用此信息处理当前请求,就像此用户将登录一样。但是,不应设置会话cookie或任何内容,以便身份验证仅对当前请求有效。

(我知道安全问题,已经解决了)

该机制应适用于呈现HTML且不限于JSON API的普通页面。

Background

我的WordPress安装无法从internet访问,但可以从应用程序服务器进行反向代理。我将WordPress中的一些页面配置为仅对某些WordPress用户可用。

现在,我想将WordPress中使用的权限用于其用户,以确定可以从应用程序服务器访问哪些内容。WordPress中的用户基本上类似于应用服务器的用户组。这样,我就可以在WordPress中使用完整的权限系统,而无需从WordPress实例中的应用服务器复制用户数据库。

1 个回复
最合适的回答,由SO网友:Rup 整理而成

是的,你可以钩住determine_current_user. 以下是WordPress调用处理身份验证Cookie的现有代码的方式:

add_filter( \'determine_current_user\', \'wp_validate_auth_cookie\'          );
add_filter( \'determine_current_user\', \'wp_validate_logged_in_cookie\', 20 );
例如,请参见wp-includes/pluggable.php.一旦处理完标头,筛选器应返回要验证的用户的用户ID。

这就是说,我假设您的应用程序服务器已经完成了身份验证,因此您不需要在此处实际验证密码:只要外部用户无法伪造到WordPress头的身份验证(并通过反向代理获得),用户名就足够了。