WordPress实现用户自动登录

WordPress是一个伟大的博客引擎。它是灵活的,可扩展,易于调整/配置集成到现有的网站。然而,如果你有一个现有的网站,提供用户认证和管理能力,让WordPress接受这些证书(在时尚的单点登录)可能是一个挑战。

在多人共用一个帐号的情况下,有这样一种需求,我不需要知道WordPress的用户名和密码,就能自动登录到公共帐号。这样的需要该如何实现呢?

在我们开始之前,我应该注意到,有许多可用的插件使WordPress的一些流行的内容管理系统在整合。我们的要求是有点不同。我们想绕过WordPress的认证机制结合在一起,通过该网站的主要部分的用户登录。事实上,在一个良好的综合网站,界面应使WordPress的网页和网站的无缝的用户休息之间导航。我们的目标是写一个WordPress插件,可以自动验证用户已经登录到父网站(和,因此,授予用户访问编辑博客的内容)。所有其他用户将会有一个未注册的访客的权利。

在我的设置,主要网站具有基于角色的权限和WordPress安装只有每个角色的一个帐户(即管理员,编辑,用户等)。该插件检查用户登录到网站,然后模拟一个WordPress随时登录用户导航到博客的作用。你应该能够为自己的需要定制方法。

方法一、利用wp_signon()模拟用户登陆

function auto_login() {
    if (!is_user_logged_in()) {
        //确定WordPress用户帐户来模拟
        $user_login = 'guest'; 

        //获得用户密码
        $user = new WP_User(0, $user_login);
        $user_pass = md5($user->user_pass); 

        //登录,设置cookies,并设置当前用户
        wp_login($user_login, $user_pass, true);
        wp_setcookie($user_login, $user_pass, true);
        wp_set_current_user($user->ID, $user_login);
    }
}
add_action('init', 'auto_login');

将上述代码放到functions.php里面即可实现自动登陆

对于细心的读者附加说明和注意事项

  1. 有一个wp-include/pluggable.php文件定义了所有你可以重写钩入功能。WordPress的API文档,尚不够深入,因此您可能需要检讨实际的代码。
  2. WordPress使用的密码的MD5哈希认证用户的双。在数据库中,密码存储在一个单一的hashed。我们需要加密密码之前将它传递到wp_login()功能(设置表明密码已经过加密运算第三个参数)。显然,硬编码的实际密码将会是一大禁忌。

方法二、无密码登陆

我们所做的一切工作,登录但如何注销?我们有几个选择。首先,我们可以称之为WordPress的注销方法是wp_clearcookie()从主站点。 这种方法的缺点是,我们需要包括所有的WordPress图书馆到我们的主网站这一工作(太多不必要的开销IMHO)。另一种方法是不是在所有从而减轻需要注销使用饼干。为此我们只是简单的将电话wp_setcookie()在插件和重写auth_redirect()函数什么也不做。这是因为我们冒充用户在每次页加载和唯一的WordPress代码检查饼干了auth_redirect()直到我们摆脱它。这另一个副作用是,联合国认证的WordPress用户将不再被带到WordPress的登录页面(但我们不想说什么)。

function auto_login() {
 if (!is_user_logged_in()) {
 //确定WordPress用户帐户来模拟
 $user_login = 'guest';
 //获取用户的ID 
 $user = get_userdatabylogin($user_login);
 $user_id = $user->ID;
 //登录
 wp_set_current_user($user_id, $user_login);
 wp_set_auth_cookie($user_id);
 do_action('wp_login', $user_login);
 }
 }
 add_action('init', 'auto_login');

特别说明

方法一或者是方法二,放到任意php文档里面,都会实现wordperss用户自动登陆,至于是需要更安全的登陆方式,就需要管理员自己斟酌了!

本文来源:http://www.uedsc.com/wordpress-auto-login.html


如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。