如何在对用户影响最小的情况下将Cookie从.subdomain.domain.com转换为.domain.com?

时间:2011-04-21 作者:editor

我需要扩展子域的cookie。领域com到所有域。com的子域(cookie术语中的domain.com)。

我正在努力将这种转变的影响降到最低。似乎用define(\'COOKIE_DOMAIN\', \'.domain.com\'); 在wp config中,用户处于一种不确定的状态——他们的cookie足以进行验证,因此它不会移动到新的域范围。

有没有关于如何转换cookies的想法。子域。领域欢迎致电。领域com对用户的影响最小?

这是我一直在失败和挣扎的代码。当检测到错误哈希时,它尝试验证旧cookie(从更改AUTH_KEY 在wp配置中。php),然后尝试重新验证并将其发送回来源:

function do_report_bad_hash( $cookie_elements ) {

    if( isset( $_COOKIE[\'wordpress_logged_in_\'] ) ) {
        $user_id = wp_validate_auth_cookie( urldecode( $_COOKIE[\'wordpress_logged_in_\']), \'logged_in\' );

        setcookie( \'wordpress_logged_in_\', \'\', 0, \'/\', \'.subdomain.domain.com\', false, true ); 
        unset( $_COOKIE[\'wordpress_logged_in_\'] );

        setcookie( \'wordpress_\', \'\', 0, \'/\', \'.subdomain.domain.com\', false, true ); 
        unset( $_COOKIE[\'wordpress_\'] );

        if ( $user_id !== false ) {

            wp_set_auth_cookie($user_id);

            $redirect = ( strpos($_SERVER[\'REQUEST_URI\'], \'/options.php\') && wp_get_referer() ) ? wp_get_referer() : $proto . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'];

            header("Location: $redirect");    

        }

    } 

}
add_action(\'auth_cookie_bad_hash\', \'do_report_bad_hash\', 11, 1 );

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

This answer 可能会有帮助。引用:

这里需要的基本代码是wp配置文件中的以下代码:

define(\'LOGGED_IN_COOKIE\', \'login_cookie_name\');
define(\'AUTH_COOKIE\',\'auth_cookie_name\');
define(\'COOKIE_DOMAIN\', \'.example.com\');
define(\'COOKIEHASH\', \'random_hash_here\');
将其放在多个站点的配置中,将密钥和salt设置为相同,您将拥有跨域和子域工作的登录cookie。

结束

相关推荐