Nano Hash - криптовалюты, майнинг, программирование

Как предотвратить уничтожение определенного сеанса

Я использую фреймворк Yii2 для своего текущего проекта. Моя проблема заключается в том, что когда пользователь выходит из системы, все сеансы уничтожаются, но на внешнем интерфейсе у меня зарегистрирован сеанс, который должен быть там после процесса выхода.

Есть ли способ в PHP сохранить этот сеанс?

19.11.2015

  • Храните его в другом месте. Сеанс предназначен для данных сеанса, используйте другие файлы cookie для хранения чего-то, что не должно касаться сеанса. 19.11.2015
  • Что такое сессия? Сессия - это что-то вроде удостоверения личности для входа в офис. Если вы покажете действительное и подлинное i-card, вы можете войти в офис, но если вы этого не сделаете, вас вышвырнут. То же самое здесь: ваш сеанс хранится на сервере, и когда вы открываете определенный URL-адрес, ваш браузер предоставляет идентификатор сеанса, такой как файл cookie, на сервер для распознавания, если есть какой-либо сеанс против этого файла cookie, вы войдете в систему, в противном случае вы выйдете из системы. причина истечения срока действия вашего сеанса, если вы очистите данные своего браузера, 19.11.2015
  • Мы не знаем о конкретной необходимости. В то время как в обычных случаях, когда вы выходите из системы, все данные сеанса должны быть уничтожены. На самом деле не наша работа ставить под сомнение его вариант использования. Я думаю, что он ищет, чтобы создать два отдельных сеанса. Как и в случае с расширенным шаблоном, отделяющим внешний интерфейс от внутреннего и предоставляя каждому из них свой собственный сеанс. 23.11.2015

Ответы:


1

Вам, вероятно, потребуется создать 2 отдельных сеанса. Для этого я думаю, что расширенный шаблон будет лучшей отправной точкой. Frontend будет вашим основным сайтом, а backend будет областью входа в систему. Вы даже можете сделать 3-й для вашей панели администратора, если это необходимо.

В вашей конфигурации вам нужно будет указать разные сеансы. То, как я его использую, заключается в том, чтобы полностью отделить мой интерфейс от бэкэнда.

Пример конфига;

'components' => [
    'user' => [
        'identityClass' => 'common\models\User',
        'enableAutoLogin' => true,
        'identityCookie' => [
            'name' => '_frontendUser', // unique for frontend
        ]
    ],
    'session' => [
        'name' => 'PHPFRONTSESSID',
        'savePath' => sys_get_temp_dir(),
    ],
    ....

Вы бы сделали то же самое для бэкэнда, только используя другие имена.

Если они все еще могут зайти на основной сайт, пока они вошли в систему, вам нужно будет выполнить некоторые дополнительные проверки, например, проверить, существует ли другой сеанс. Вы можете создать специальное правило, чтобы перенаправлять их с основного сайта в область входа в систему, если она существует. Если им по-прежнему нужен доступ к основному сайту, но они знают, вошли ли они в систему (например, показать выход из системы вместо ссылки для входа или показать свое имя пользователя), вам придется сослаться на другой сеанс.

Я не уверен, что вы действительно можете использовать сеанс из другого раздела... Обойти это можно было бы, сохранив данные в первом сеансе о втором сеансе. В вашей процедуре входа в систему вам нужно будет ввести пользовательские данные в первый сеанс. А при выходе удалить.

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

Тем не менее, я думаю, что ваше зависание прямо сейчас заключается в том, что вам нужно определить отдельные значения сеанса в вашей конфигурации.

Я также должен добавить, что я написал вики о том, как иметь 2 отдельных сеанса здесь: http://www.yiiframework.com/wiki/814/guide-how-to-actually-separate-frontend-user-and-backend-admin-on-yii2-advanced/

Проблема с yiii2 advanced: по умолчанию, если вы входите в интерфейс, вы также входите в бэкэнд. Что ж, если вы используете интерфейс в качестве участников и серверную часть в качестве администратора, вам это не нужно! Участник не должен входить в админку. Таким образом, вы должны сделать их 2 отдельными сеансами.

Хотя моя вики предназначена для немного другого использования, я думаю, что она связана с той же проблемой и может помочь вам понять это.

23.11.2015

2

Если вам нужны разные сеансы для интерфейса/сервера, разделите их, как указано в других ответах, но, если вам нужно сохранить данные между сеансами пользователей, сохраните их в базе данных.

23.11.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..