[РЕШЕНО] Авторизация во все поддомены

Переключение контекстов сделано. Необходимо реализовать авторизацию сразу во все контексты из любого текущего. Цену и вопросы в личку.
MrKarandash
30 сентября 2013, 19:01
modx.pro
5
5 014
0

Комментарии: 12

Василий Наумкин
01 октября 2013, 06:53
0
Никто не откликнется на это объявление о работе, потому перенес в вопросы.

Сниппет, которым ты авторизуешься должен вызвать процессор security/login с параметрами
login_context = основной контекст
add_contexts = контекст2, контекст3, и т.д.
Это авторизует юзера сразу во все указанные контексты. В твоём случае основной контекст всегда должен быть web.

То есть, вызов Login должен выглядеть так:
[[!Login?
	&loginContext=`web`
	&contexts=`ctx2,ctx3,ctx4`
]]
Причем, это едино для всех контекстов.

Ну а дальше ты любым удобным способом переключаешь контексты, когда нужно, и больше ничего не делаешь.
    MrKarandash
    01 октября 2013, 09:10
    0
    Вызов сниппета:
    [[!Login? &contexts=`msk,krasnodar` &loginContext=`web` &loginTpl=`lgnLoginTpl` &logoutTpl=`lgnLogoutTpl` &errTpl=`lgnErrTpl` &loginResourceId=`[[*id]]` &logoutResourceId=`[[*id]]`]]

    Настройки контекста:
    Базовый URL base_url: /
    Хост контекста http_host: sub1.domain.dev
    Хост для поиска multisite_http_host: sub1.domain.dev
    Ключ авторизации multisite_site_group: auth
    Главная страница site_start: 2
    Адрес сайта site_url: http:// sub1.domain.dev

    Плагин переключения контекстов, висящий на OnHandleRequest:
    <?php
    if($modx->context->key!="mgr")
    {
        $object = $modx->getObject('modContextSetting', array('key' => 'multisite_http_host', 'value' => $modx->getOption('http_host')));
        if($object)
            $modx->switchContext($object->get('context_key'));
    }


    Не работает

    Забыл уточнить, шаблон, в котором вызывается Login — один для всех контекстов
      Василий Наумкин
      01 октября 2013, 10:16
      0
      Проверяешь в анонимном режиме браузера?

      Авторизация в mgr может мешать.
        MrKarandash
        01 октября 2013, 11:26
        0
        Очищаю полностью личные данные после каждого изменения и попыткой войти, в отдельно открытом браузере. Ну в любом случае, логинится только в текущий контекст
          Василий Наумкин
          01 октября 2013, 11:46
          0
          Пришли логин\пароль на bezumkin@ya.ru, посмотрю.
            MrKarandash
            01 октября 2013, 19:35
            0
            Ушло, спасибо за помощь!
              Василий Наумкин
              01 октября 2013, 19:59
              0
              У тебя 3 разных поддомена.

              Сессия — это кука, которая выставляется в бразуер и по ней поднимается информация с сервера. При авторизации по основному домену, кука выстаовется только для него.

              Чтобы выставлялось и для поддоменов, нужно указать системную настройку
              session_cookie_domain = mysite.com

              И тогда всё работает.
                MrKarandash
                01 октября 2013, 21:42
                0
                Большое спасибо!!!
                Я пробовал, но похоже из за каши в голове в процессе поиска решения я забывал удалять личную инфу и ничего не получалось (
                Но теперь все хорошо, еще раз благодарю! )
        Николай Загумённов
        20 января 2015, 21:25
        +1
        &loginContext=`web`
        Этот параметр дописаный какой-то или он есть в компоненте login?
          MrKarandash
          20 января 2015, 22:55
          +1
          Есть в компоненте
        Александр
        10 марта 2016, 11:12
        0
        Добрый день всем, у меня сложилась похожая ситуация: доделываю сайт на modx revo. До этого с modx не работал. Встала проблема: необходимо сделать автоматическую авторизацию на все синонимы сайта — они же поддомены, все поддомены прописаны на хостинге beget и ссылаются на одну папку, то бишь открывается один сайт. Админ авторизуется через админку на domain.com или sub.domain.com и следовательно должен автоматически авторизовываться на фронтенде, но во всех возможных поддоменах: sub1.domain.com, sub2.domain.com, sub2.domain.com.
        Как это реализовать?
          Александр
          10 марта 2016, 11:28
          0
          после добавления session_cookie_domain = .mysite.com все заработало. Конечно, по началу пока не вышел из админки добавлялось две куки: с поддоменом и с .domain.com и авторизация не проходила — система путалась ), теперь добавляется одна кука от domain.com со значением .domain.com. Спасибо за подсказку Василию.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          12