web-dev-qa-db-ja.com

ユーザーへの影響を最小限に抑えて、cookieを.subdomain.domain.comから.domain.comに移行する方法

Subdomain.domain.comのCookieをdomain.comのすべてのサブドメイン(Cookieの用語では.domain.com)に拡張する必要があります。

この移行による影響を最小限に抑えるようにしています。 wp-configでスイッチをdefine('COOKIE_DOMAIN', '.domain.com');で切り替えると、ユーザーはlimboの状態になります - それらのCookieは検証するのに十分なので、新しいドメインスコープに移動しません。

ユーザーへの影響を最小限に抑えながら、Cookieを.subdomain.domain.comから.domain.comに移行する方法に関するアイデアはありますか。

これは私が失敗していて失敗しているコードです。 (wp-config.phpのAUTH_KEYを変更することによって)不正なハッシュが検出されたときに古いクッキーを検証しようと試み、次にそれらを再検証してそれらが来た場所に送り返すことを試みます:

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 );
3
editor

この答え が役に立つかもしれません。引用する:

ここで必要な基本的なコードは、wp-configファイルにあります。

define('LOGGED_IN_COOKIE', 'login_cookie_name');
define('AUTH_COOKIE','auth_cookie_name');
define('COOKIE_DOMAIN', '.example.com');
define('COOKIEHASH', 'random_hash_here');

複数のサイトにまたがる設定にそれを入れて、キーとソルトを同じに設定すれば、あなたはドメインとサブドメインにまたがって働くログインクッキーを持つことになるでしょう。

2
edzillion