16 нояб. 2014 г., 5:59
Мульти аккаунты в ModX и авторизация разных аккаунтов в 1 вкладке
Здравствуйте, посетил меня вопрос о том как устроены пользователи ModX и подумав о том что в самом объекте ModX сетнуть мы можем только одного user , но при ситуации таким образом мульти привязку аккауна реализовать неудатся , я имею ввиду такие примеры как Mail.ru где можно войти с разных ящиков при этом не туда сюда на странице авторизации, а просто добавив свой дополнительный акк к имеющимся.
Если речь о переключении аккаунтов, то здесь особой проблемы нет.
$modx->user = $modx->getObject('modUser', $id); $modx->user->addSessionContext('web');
То есть при смене вкладок ведь по сути в единицу времени один только пользователь (на один запрос к веб-серверу), это решаемо. А вот несколько пользователей на один запрос к веб-серверу - это никак (хотя если очень надо, то и это можно провернуть местами).
По поводу контекстов речи нет здесь все разрабы показали и указали, тоесть ModX на это наточен, я о том к примеру что то типа подмены PHPSESSID на клиенте при запросе, в следствии модкс отвечал как обычно в соответствии с айди сессии , скорее всего эта задача возлагается на клиент т.к подмену SESSID может организовать именно он, JS хранит список аккаунтов юзера (хеши сессий), юзер может из него выбрать от какого отправлять запросы, а сервер все как обычно обрабатывает.
Про контексты я вообще ничего не говорил. А про сессии... Меняйте перед отправкой запроса на сервер кукис PHPSESSID еще на стороне браузера и все. Делов-то.
Спасибо, это может каким нибудь-образом влиять на безопасность?
Нет. То есть не больше, чем это есть в принципе. По большому счету и без всяких этих лишних движений если узнать ID сессии, и подставить в запрос, то будешь авторизован и иметь привилегии текущего пользователя, но так как подбор идентификатора - задача почти нереальная, то париться на этот счет нечего. Пользователю будут известны только те идентификаторы, которые он получил, авторизовываясь по логину и паролю. То есть каждый раз при авторизации, пишите id сессии в сторейдж браузера. А при желании переключиться в другого пользователя просто берете нужный ID и подставляете в куку. Деталей не спрашивайте, это общий механизм, экспериментировать до конечного результата придется вам самостоятельно.
вот же мысли сходятся, мы просто удобно продлеваем сессию с использованием клиента, а если сервер по своему мнению сбросил сессию, требуем авторизации и так-далее, все ясно спасибо Николай, детали это уже дело бытовое, свойское,принцип один)) но реализовать такое достаточно просто, при доработке на клиенте.
но реализовать такое достаточно просто, при доработке на клиенте.
Так и есть.
Для информации: в компоненте shopModx1C тоже используется поддержка сессии просто передачей кукис-значения от 1С-сервера. То есть когда идет первый пробный запрос от 1С с передачей логина и пароля, если авторизация проходит успешно, 1С просто добавляет значение кукиса в запрос и все, проблем нет никаких, MODX корректно инициализирует сессию пользователя при каждом дальнейшем запросе. В общем, тут у вас все должно работать без всяких сложностей.
по сути это конкретно ModX даже не касается, копаюсь по Modx где-то полгода и поражаюсь на что он способен в общем, баги конечно есть, но это дело житейское. не понимаю единственно почему система не так популярна по рф нежели эти пафосные Джумлы вордпрессы, это оффтоп конечно.
Да не важно все это, что популярно, а что нет. Важно что вы для себя выбираете и что с этим делаете. Мне вообще пофиг на все эти тренды.