调用wp_SignOn不会让用户登录

时间:2014-10-22 作者:Adrian

我目前正在为我的Wordpress站点编程一个单点登录机制,以允许我公司的帮助台系统根据Wordpress进行身份验证。

为了允许这种情况发生,如果用户尚未登录,我将使用wp\\u signon()对其进行登录。以下是我所做工作的简化版本:

<?php
define(\'WP_USE_THEMES\', false);
require("wp-blog-header.php");

if(!is_user_logged_in() && $_POST["log"] == "") {
    //redirect to login form that submits to this PHP script
    exit(0);
}

if(!is_user_logged_in() && $_POST["log"] != "") {
    $creds = array(\'user_login\' => $_POST["log"], \'user_password\' => $_POST[\'pwd\'], \'remember\' => $_POST["rememberme"]);
    $user_info = wp_signon($creds, false);

    if(!is_a($user_info, \'WP_Error\')) {
        $username = $_POST["log"];
        wp_set_current_user($user->ID, $username);
        wp_set_auth_cookie($user->ID, true, false); 
        do_action(\'wp_login\', $username);
    } else {
        write_log(ERROR, "Error authenticating: " . $user_info->get_error_message($user_info->get_error_code()));
    }

$user_info = wp_get_current_user();

/* Code from here uses user attributes to generate and encrypt a single sign-on token */
?>
我面临的问题是即使打了电话wp_signon(), wp_set_current_user(), wp_set_auth_cookie() 和登录操作,用户仍然没有登录。我得到了他们的$user\\u info对象,但他们没有登录Wordpress,因此稍后当他们从支持系统返回一个安全链接时,他们无法访问该页面,必须再次登录(从而破坏了单点登录的目的)。

此外,我还试着替换整个wp_signon() 具有的节auth_redirect() 这确实成功地将用户登录到了该站点,但我发现他们被重定向到了配置文件页面,即使URL有一个查询参数将他们重定向回我的脚本。

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

您需要确保您的代码在auth_redirect() 被调用。

简单地说,您需要使用setup_theme 行动对我来说,这很有效。

结束

相关推荐

Get_bloginfo打印IP而不是url

我最近刚刚将一个站点移动到另一个生产环境,我似乎错过了db配置中的一些设置,因为许多内置函数打印的是IP而不是url。想法?已尝试将wp\\U选项表下的site\\u url和home从IP切换到http://project.dev (默认设置为特定IP,我在其中管理在Apache上运行的不同本地项目)。正在输入http://project.dev/wp-admin 给了我http://192.168.33.21/wp-login.php?redirect_to=http%3A%2F%2Fproject.