авторизация на поддомене
Возможно, я сильно туплю и не вижу очевидных вещей, но вот пытаюсь на поддомене проверить, авторизован ли пользователь
Так же пытался без этой строчки $modx = new modX();
Много читал про контексты, но мне это не нужно. Мне нужно только проверить авторизацию, получить мыло, если авторизован и в итоге вывести форму авторизации/регистрации или, если авторизован, уже мой определенный контент.
Так как мне проверить авторизацию?
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();
Много читал про контексты, но мне это не нужно. Мне нужно только проверить авторизацию, получить мыло, если авторизован и в итоге вывести форму авторизации/регистрации или, если авторизован, уже мой определенный контент.
Так как мне проверить авторизацию?
Комментарии: 28
И еще, сессия в куках на поддомене есть
Что у тебя на поддомене? Как он обслуживается? Через стандартный контекст или вновь созданный? Тут телепатией никто не обладает.
Поддомен поднят вообще без использования modx. А щас вот понадобилось делать там проверку на авторизацию с основного сайта, вот и стал прикручивать modx_api_mod
Как минимум прочитай вот эту заметку.
Затем разлогинься отовсюду и снова залогинься и проверяй
Ну и от куки тоже может зависить. Если домен www.site.ru, то кука выствится именно для него, а не для *.site.ru — это нужно менять в настройках.
Вообще всё, что касается авторизации можно увидеть в сессии:
Затем разлогинься отовсюду и снова залогинься и проверяй
$modx->user->isAuthenticated($modx->context->key);
Ну и от куки тоже может зависить. Если домен www.site.ru, то кука выствится именно для него, а не для *.site.ru — это нужно менять в настройках.
Вообще всё, что касается авторизации можно увидеть в сессии:
print_r($_SESSION);
Авторизация там — это массив contextTokens, или как-то так.
У меня значение session_cookie_domain пустое и, при попытке вставить туда что-либо свое (например мойсай.ру или *.мойсайт.ру), авторизация не срабатывает вообще (как для админа, так и для простого пользователя), хотя записи в БД session появляются
test.ru и dev.test.ru это разные домены и если dev.test.ru создавался отдельно от modx и им не обрабатывается то это тоже самое что говорить я зашел на сайте bezumkin.ru, почему тогда не сработала авторизация и на test.ru ведь я зашел на сайте Василия.
значит нужно делать через контексты? как указано в оф вики rtfm.modx.com/revolution/2.x/administering-your-site/contexts/creating-a-subdomain-from-a-folder-using-virtual-hosts?
Вот здесь похожая ситуация, решили именно session_cookie_domain
И при каждом изменении проверять нужно заново, из анонимного режима — чтобы наверняка.
И при каждом изменении проверять нужно заново, из анонимного режима — чтобы наверняка.
Да, но на сколько я понял топикстартер не использовал контекст для под домена. Отсюда получается что modx не знает что у него есть под домен.
Похоже удалось сделать через контекст. Жаль, что нельзя как-то проще проверить авторизацию через API
В итоге выставил session_cookie_domain на.мойсай.ру, сбросил сеансы и теперь образовалась такая проблема: те, кто был авторизован до этого, не могут авторизоваться, при вводе корректных данных страница просто обновляется, помогает только очистка кук, но не будешь же всем об этом говорить да и многие наши посетители не знают что такое) Так вот, как быть? И в чем вообще причина? Мне на ум приходит пока только одно — чистить куки у не авторизованных посетителей или это не поможет?
Видимо, что-то у них там сохранилось в сессии.
Очисти таблицу modx_session — все авторизуются заново и получат новые куки.
Это можно сделать и в админке — меню «Безопасность» → «Завершить все сеансы».
Очисти таблицу modx_session — все авторизуются заново и получат новые куки.
Это можно сделать и в админке — меню «Безопасность» → «Завершить все сеансы».
> сбросил сеансы
> «Безопасность» → «Завершить все сеансы»
именно это я и сделал, после изменения session_cookie_domain. сам удивлен, что не помогло
> «Безопасность» → «Завершить все сеансы»
именно это я и сделал, после изменения session_cookie_domain. сам удивлен, что не помогло
Ну тогда можно еще поменять в настройках session_name.
А «Завершить все сеансы» обязательно после этого делать?
Не помешает.
Это завершение очщает сессии в БД.
Это завершение очщает сессии в БД.
Вроде помогло. Спасибо)
Еще обнаружилась такая проблема: главная поддомена (этого нового контекста) работает нормально, но вот если я создаю еще одну страницу в этом контексте, то эта страница выдает 404. Может я не всё указал в настройках контекста? (вот что указано щас: base_url, http_host, site_start и site_url)
Скорее не дал прав группе юзера на загрузку страниц из этого контекста.
А а для анонимусов-то права стоят: (anonymous) 9999 Load Only
Добавил для пользователей права Load, List and View, всё так же(( (права доступа перезагружал)
Добавил для пользователей права Load, List and View, всё так же(( (права доступа перезагружал)
Из админки не забыл выйти?
Лучше проверять в анонимном режиме.
Лучше проверять в анонимном режиме.
да я тестю в другом браузере. 404 выдает(( а как так может быть, что индексная доступна для просмотра, а любая внутренняя — нет?
Не знаю.
Василий, подскажи по ГибридАут. Есть несколько контекстов-поддоменов. Указал session_cookie_domain = .mydomain.ru
Вроде логинится. Но, при выходе на одном контексте (который указан в &loginContext), я перехожу на другой контекст и могу опубликовать тикет. Хотя, по-идее, должен был увидеть сообщение о необходимости авторизоваться.
Заранее благодарен.
Вроде логинится. Но, при выходе на одном контексте (который указан в &loginContext), я перехожу на другой контекст и могу опубликовать тикет. Хотя, по-идее, должен был увидеть сообщение о необходимости авторизоваться.
Заранее благодарен.
Отцы, в чем дело может быть? Помогайте!
А может кто-нить поделиться конфигом nginx для поддомена? Может я там накосячил…
Разобрался :) Для дебагинга помогла директива fastcgi_intercept_errors on; Без неё в логах было пусто
Еще одна проблема:
при отправке писем с поддомена ссылки на ресурсы основного домена получаются такими: поддомен.сайт.ру/страница.html т.е. подставляется поддомен. Может в настройках чего указать надо? Ссылки генерятся в чанке простым [[~]]
при отправке писем с поддомена ссылки на ресурсы основного домена получаются такими: поддомен.сайт.ру/страница.html т.е. подставляется поддомен. Может в настройках чего указать надо? Ссылки генерятся в чанке простым [[~]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.