Поддержка Проблемы и решения Повторная авторизация после перехода на SSL

  • Всем привет.
    Может ли быть такое что после перехода на SSL скрипт просит авторизоваться повторно при входе в админку.
    Т.е. авторизация админом через тему, все ок, показывает что консоль доступна, переходим в консоль просит авторизоваться, на локалке где http такой проблемы нет.
    Подскажите, направьте пожалуйста, куда копать?
    Авторизация в теме:

                    <?php
                        // If self link in home redirect dashboard else reload page
                        $protocol = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
                        $action_link = $_SERVER['REQUEST_URI'];
                        if(is_home()) {
                            $redirect_url = et_get_page_link('dashboard');
                            echo '<input type="hidden" name="redirect_url" class="redirect_url" value="'. $redirect_url .'" />';
                        } elseif(!empty($redirect_url)) {
                            echo '<input type="hidden" name="redirect_url" class="redirect_url" value="'. $redirect_url .'" />';
                        } else {
                            echo '<input type="hidden" name="redirect_url" class="redirect_url" value="'. $protocol.$_SERVER['HTTP_HOST'].$action_link .'" />';
                        }
                    ?>
Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Что за скрипт у вас? Что означает авторизация админом через тему? У вас локалка или обычный хостинг?

    Модератор Yui

    (@fierevere)

    永子

    https и http являются разными сайтами для браузера
    если для куки установлен атрибут Secure, то работать по http такие куки не будут.
    см https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies

    как бы да, Вы правы
    но тогда мне нужно чтобы куки работали не с http а с https

    В текущей теме связанности с SSL мало

    вот тут работа с куки, вроде все в порядке

                            $secure = ( 'https' === parse_url( site_url(), PHP_URL_SCHEME ) && 'https' === parse_url( home_url(), PHP_URL_SCHEME ) );
                            setcookie( 'refresh_token', $data->refresh_token, time() + 3600*24*7, SITECOOKIEPATH, COOKIE_DOMAIN, $secure );

    а это функция в разделе работы с алиасами:

    function mje_get_url_origin($s, $use_forwarded_host = false) {
    	$ssl = (!empty($s['HTTPS']) && $s['HTTPS'] == 'on');
    	$sp = strtolower($s['SERVER_PROTOCOL']);
    	$protocol = substr($sp, 0, strpos($sp, '/')) . (($ssl) ? 's' : '');
    	$port = $s['SERVER_PORT'];
    	$port = ((!$ssl && $port == '80') || ($ssl && $port == '443')) ? '' : ':' . $port;
    	$host = ($use_forwarded_host && isset($s['HTTP_X_FORWARDED_HOST'])) ? $s['HTTP_X_FORWARDED_HOST'] : (isset($s['HTTP_HOST']) ? $s['HTTP_HOST'] : null);
    	$host = isset($host) ? $host : $s['SERVER_NAME'] . $port;
    	return $protocol . '://' . $host;
    }

    может в конфигах WP что-то еще включить нужно:
    $s[‘HTTPS’] == ‘on’
    $ssl = (!empty($s['HTTPS']) && $s['HTTPS'] == 'on');

    Вордпресс прекрасно работает с SSL без всякого изменения в конфигах. Достаточно в настройках сайта указать адрес сайта с https и сделать редирект на https. Дело в вашем секретном скрипте. Есть специализированные форумы по PHP, можете там тоже спросить.

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Повторная авторизация после перехода на SSL» закрыта для новых ответов.