fix(core): Manager login with anonymous_sessions = No - #85
Open
Ibochkarev wants to merge 2 commits into
Open
Conversation
Disable anonymous_sessions only on public contexts. Force anonymous_sessions=Yes on the mgr context via install data and a 3.3.0 upgrade so manager login can start a session without an existing cookie.
Co-authored-by: Jim Graham <jim@pixelsandstrings.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что сделано
Сохраняет PHP-сессии доступными для менеджера, когда
anonymous_sessionsвыключен на системном уровне.Вместо special-case
mgrвнутриmodX::_initSession()добавляется context settinganonymous_sessions=Yesнаmgr(install data + апгрейд 3.3.0). Context settings переопределяют system settings, поэтому логин менеджера может стартовать сессию до того, как cookie существует. Публичные контексты по-прежнему могут ставитьanonymous_sessions=Noсами.Английское описание настройки теперь говорит отключать опцию на публичных контекстах, а не system-wide, и что
mgrнуждается в сессиях для логина.Зачем нужно
При системном
anonymous_sessions=Noи очищенных cookie логин менеджера перезагружает форму и никогда не аутентифицирует. Session bootstrap стартует сессию только когда anonymous sessions разрешены или cookie сессии уже есть, поэтому первый логин никогда не получает cookie.Обсуждение в modxcms#16424 / modxcms#12983 (и тредах комьюнити) трактовало это как context setting для публичных фронтов. Выключение в System Settings случайно отключает сессии и для
mgr. Это изменение матчит ту модель: держать сессии менеджера вкл, оставляя публичным контекстам свободу opt out.Как проверить
mgranonymous_sessions=Yes(или запустите setup upgrade до 3.3.0-dev / 3.3.0-pl).anonymous_sessionsв No.webпоставьтеanonymous_sessionsв No и подтвердите, что анонимные фронт-запросы по-прежнему пропускают старт сессии, когда cookie нет.Связанные
Refs modxcms#16424
Адресует фидбек от @Jako, @mkschell и @smg6511 о сохранении per-context намерения вместо хардкода
mgrв core session bootstrap.Оригинал: modxcms#16836