2012-05-03 62 views
2

我有一个Web应用程序,用户在使用它之前将进行身份验证。此应用程序的帮助文档使用安装在不同服务器上的Wordpress进行维护(如果需要,Wordpress实例也可以安装在同一台服务器上)。为了访问文档,用户必须经过认证,现在可以使用Wordpress插件完成。我们如何才能使网站认证用户autologin wordpress?

现在我想使认证过程对所有人都通用。即用户来到Web应用程序,然后登录以使用应用程序,他们可以单击应用程序中的“文档”链接,用户也可以自动登录到Wordpress。我怎样才能实现这个?

回答

2

我不得不这样做,其中一个用户必须点击电子邮件中的链接,它会自动记录他们在之前类似的东西。

添加以下到我的主题的header.php

if (!is_user_logged_in()) 
{ 
    if (isset($_GET['u']) && !empty($_GET['u'])) 
    { 
    $u = $_GET['u']; 
    $result = $wpdb->get_row($wpdb->prepare("SELECT * FROM wp_users WHERE md5(concat(user_login,'SOMESECRETPHRASE',user_email)) = '%s' AND user_login != 'admin'",$u)); 
    if (isset($result->ID) && isset($result->user_login)) 
    { 
     wp_set_current_user($result->ID, $result->user_login); 
     wp_set_auth_cookie($result->ID); 
    } 
    } 
} 

用户登录链接是通过添加/?u=".md5($user_login."SOMESECRETPHRASE".$user_email) 到链接的末尾

然后,他们将自动作为正确的WordPress用户登录到WordPress。

+1

感谢您对我一直在努力的项目非常有帮助。作为额外的安全措施,我还将当前日期的md5与另一个秘密短语一起添加。这样脚本将只允许最近的登录链接。 – iagdotme

+0

伙计,这不够好!你必须生成一个长的TOTALLY RANDOM标记,并且实际上将其保存到用户,并且匹配完全相同的标记,最好使用'tries'列,这样它就不会被强制强制。如果有人猜到您的EASY EASY MD5(坏BAD!),他们可以以任何用户身份登录。 – Funkodebat

相关问题