editor
  • 0
Профи

Как перенести файлы cookie с.Subdomain.Domain.Com на.Domain.Com с минимальным воздействием на пользователей?

  • 0

Мне нужно расширить файлы cookie subdomain.domain.com на все поддомены domain.com (.domain.com в терминах файлов cookie).

Я пытаюсь свести к минимуму влияние этого перехода. Кажется, что переключение переключателя define('COOKIE_DOMAIN', '.domain.com'); в wp-config оставляет пользователя в состоянии неопределенности — его файл cookie достаточно хорош для проверки, поэтому он не переместится в новую область домена.

Любые идеи о том, как я могу перенести файлы cookie с.subdomain.domain.com на.domain.com с минимальным воздействием на пользователей?

Вот код, с которым я терпел неудачу. Он пытается проверить старые файлы cookie при обнаружении неправильного хэша (из-за изменения AUTH_KEY в wp-config.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 );
Share
  1. Я не эксперт, но проблема в том, что вы устанавливаете, а затем удаляете файл cookie в следующей строке, или файлы cookie зависят от домена?

    • 0
  2. Этот ответ может помочь. Цитировать:

    Основной код, который вам нужен, находится в файле 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');
    

    Поместите это в конфигурацию на нескольких сайтах, установите одинаковые ключи и соли, и у вас будут файлы cookie для входа, которые работают в домене и поддоменах.

    • 0

Оставить ответ

You must login to add an answer.