К содержанию

авторизация на поддомене

Возможно, я сильно туплю и не вижу очевидных вещей, но вот пытаюсь на поддомене проверить, авторизован ли пользователь

define('MODX_API_MODE', true);
    require '../site/index.php';
    $modx = new modX();
    $modx->initialize('web');
    $modx->getService('error','error.modError');
        
    print_r($modx->user->username);
на что мне отвечают: (anonymous)
Так же пытался без этой строчки $modx = new modX();

Много читал про контексты, но мне это не нужно. Мне нужно только проверить авторизацию, получить мыло, если авторизован и в итоге вывести форму авторизации/регистрации или, если авторизован, уже мой определенный контент.
Так как мне проверить авторизацию?
Пётр Молчанов
Пётр Молчанов
19 декабря 2013, 12:07
modx.pro
3 410
Реклама

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

Пётр Молчанов
Пётр Молчанов Старожил
19 декабря 2013, 16:17
И еще, сессия в куках на поддомене есть
    Aртур Чикин
    Aртур Чикин Старожил
    19 декабря 2013, 22:30
    Что у тебя на поддомене? Как он обслуживается? Через стандартный контекст или вновь созданный? Тут телепатией никто не обладает.
      Пётр Молчанов
      Пётр Молчанов Старожил
      20 декабря 2013, 10:52
      Поддомен поднят вообще без использования modx. А щас вот понадобилось делать там проверку на авторизацию с основного сайта, вот и стал прикручивать modx_api_mod
    Василий Наумкин
    Василий Наумкин Администратор
    19 декабря 2013, 23:04
    Как минимум прочитай вот эту заметку.

    Затем разлогинься отовсюду и снова залогинься и проверяй
    $modx->user->isAuthenticated($modx->context->key);

    Ну и от куки тоже может зависить. Если домен www.site.ru, то кука выствится именно для него, а не для *.site.ru — это нужно менять в настройках.

    Вообще всё, что касается авторизации можно увидеть в сессии:
    print_r($_SESSION);
    Авторизация там — это массив contextTokens, или как-то так.
      Пётр Молчанов
      Пётр Молчанов Старожил
      20 декабря 2013, 12:11
      У меня значение session_cookie_domain пустое и, при попытке вставить туда что-либо свое (например мойсай.ру или *.мойсайт.ру), авторизация не срабатывает вообще (как для админа, так и для простого пользователя), хотя записи в БД session появляются
        Aртур Чикин
        Aртур Чикин Старожил
        20 декабря 2013, 14:19
        test.ru и dev.test.ru это разные домены и если dev.test.ru создавался отдельно от modx и им не обрабатывается то это тоже самое что говорить я зашел на сайте bezumkin.ru, почему тогда не сработала авторизация и на test.ru ведь я зашел на сайте Василия.
        Василий Наумкин
        Василий Наумкин Администратор
        20 декабря 2013, 17:43
        Вот здесь похожая ситуация, решили именно session_cookie_domain

        И при каждом изменении проверять нужно заново, из анонимного режима — чтобы наверняка.
          Aртур Чикин
          Aртур Чикин Старожил
          20 декабря 2013, 18:11
          Да, но на сколько я понял топикстартер не использовал контекст для под домена. Отсюда получается что modx не знает что у него есть под домен.
      Пётр Молчанов
      Пётр Молчанов Старожил
      20 декабря 2013, 16:09
      Похоже удалось сделать через контекст. Жаль, что нельзя как-то проще проверить авторизацию через API
        Пётр Молчанов
        Пётр Молчанов Старожил
        13 января 2014, 14:41
        В итоге выставил session_cookie_domain на.мойсай.ру, сбросил сеансы и теперь образовалась такая проблема: те, кто был авторизован до этого, не могут авторизоваться, при вводе корректных данных страница просто обновляется, помогает только очистка кук, но не будешь же всем об этом говорить да и многие наши посетители не знают что такое) Так вот, как быть? И в чем вообще причина? Мне на ум приходит пока только одно — чистить куки у не авторизованных посетителей или это не поможет?
          Василий Наумкин
          Василий Наумкин Администратор
          13 января 2014, 15:02
          Видимо, что-то у них там сохранилось в сессии.

          Очисти таблицу modx_session — все авторизуются заново и получат новые куки.
          Это можно сделать и в админке — меню «Безопасность» → «Завершить все сеансы».
            Пётр Молчанов
            Пётр Молчанов Старожил
            13 января 2014, 15:05
            > сбросил сеансы
            > «Безопасность» → «Завершить все сеансы»
            именно это я и сделал, после изменения session_cookie_domain. сам удивлен, что не помогло
              Василий Наумкин
              Василий Наумкин Администратор
              13 января 2014, 15:08
              Ну тогда можно еще поменять в настройках session_name.
                Пётр Молчанов
                Пётр Молчанов Старожил
                13 января 2014, 15:14
                А «Завершить все сеансы» обязательно после этого делать?
                  Василий Наумкин
                  Василий Наумкин Администратор
                  13 января 2014, 15:15
                  Не помешает.

                  Это завершение очщает сессии в БД.
                  Пётр Молчанов
                  Пётр Молчанов Старожил
                  14 января 2014, 10:16
                  Вроде помогло. Спасибо)
            Пётр Молчанов
            Пётр Молчанов Старожил
            17 января 2014, 11:55
            Еще обнаружилась такая проблема: главная поддомена (этого нового контекста) работает нормально, но вот если я создаю еще одну страницу в этом контексте, то эта страница выдает 404. Может я не всё указал в настройках контекста? (вот что указано щас: base_url, http_host, site_start и site_url)
              Василий Наумкин
              Василий Наумкин Администратор
              17 января 2014, 14:29
              Скорее не дал прав группе юзера на загрузку страниц из этого контекста.
                Пётр Молчанов
                Пётр Молчанов Старожил
                17 января 2014, 14:43
                А а для анонимусов-то права стоят: (anonymous) 9999 Load Only
                Добавил для пользователей права Load, List and View, всё так же(( (права доступа перезагружал)
                  Василий Наумкин
                  Василий Наумкин Администратор
                  17 января 2014, 15:01
                  Из админки не забыл выйти?

                  Лучше проверять в анонимном режиме.
                    Пётр Молчанов
                    Пётр Молчанов Старожил
                    17 января 2014, 15:19
                    да я тестю в другом браузере. 404 выдает(( а как так может быть, что индексная доступна для просмотра, а любая внутренняя — нет?
                      Василий Наумкин
                      Василий Наумкин Администратор
                      17 января 2014, 15:22
                      Не знаю.
                        Wassi Wassinen
                        Wassi Wassinen Проверенный
                        06 января 2015, 05:50
                        Василий, подскажи по ГибридАут. Есть несколько контекстов-поддоменов. Указал session_cookie_domain = .mydomain.ru

                        Вроде логинится. Но, при выходе на одном контексте (который указан в &loginContext), я перехожу на другой контекст и могу опубликовать тикет. Хотя, по-идее, должен был увидеть сообщение о необходимости авторизоваться.

                        Заранее благодарен.
                          Wassi Wassinen
                          Wassi Wassinen Проверенный
                          07 января 2015, 00:11
                          Отцы, в чем дело может быть? Помогайте!
                Пётр Молчанов
                Пётр Молчанов Старожил
                20 января 2014, 11:51
                А может кто-нить поделиться конфигом nginx для поддомена? Может я там накосячил…
                  Пётр Молчанов
                  Пётр Молчанов Старожил
                  03 февраля 2014, 16:26
                  Разобрался :) Для дебагинга помогла директива fastcgi_intercept_errors on; Без неё в логах было пусто
                    Пётр Молчанов
                    Пётр Молчанов Старожил
                    04 февраля 2014, 13:46
                    Еще одна проблема:
                    при отправке писем с поддомена ссылки на ресурсы основного домена получаются такими: поддомен.сайт.ру/страница.html т.е. подставляется поддомен. Может в настройках чего указать надо? Ссылки генерятся в чанке простым [[~]]
                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                      28