За последние 24 часа нас посетили 22415 программистов и 1185 роботов. Сейчас ищут 695 программистов ...

Запрос авторизации после закрытия сессии

Тема в разделе "Прочие вопросы по PHP", создана пользователем troinfo12, 29 ноя 2019.

  1. troinfo12

    troinfo12 Активный пользователь

    С нами с:
    29 ноя 2019
    Сообщения:
    9
    Симпатии:
    0
    Всем привет!

    Есть сайт (создан на паттерне проектирования MVC) на котором реализован механизм авторизации. В тестовом задании меня попросили реализовать следующее:

    Открыть параллельно приложение в новой вкладке. Разлогиниться в новой вкладке. В этой вкладке не должно быть возможности редактировать задачу. Вернуться в предыдущую вкладку. Отредактировать задачу и сохранить. Отредактированная задача не должна быть сохранена. Приложение должно запросить авторизацию.

    Первое что приходит на ум, сделать JavaScript файл, который бы обращался к PHP файл, а тот в свою очередь сообщал о наличии в сессии переменной о авторизации.

    Просьба, подскажите пример. Хотя мне кажется, задача больше для JavaScript, чем для PHP.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.825
    Симпатии:
    738
    Адрес:
    Татарстан
    Вообще js не при чем. Если нормальная авторизация, нормальные mvc, контролёры которого проверяют авторизацию там где нужно, то оно все так и будет работать

    При выходе в новой вкладке убьется сессия с авторизацией - отправляй на форму входа

    Ну а старая вкладка хоть и пошлет данные контроллеру - там же авторизация проверяется перед записью, так ведь?? И не увидит он ее и отошлет на стр логина
     
  3. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Просто перед тем как вносить изменения смотреть зареган ли пользователь, и все.
    Вот смотри, для примера:

    1. У тебя есть счет в банке 1000000. Ты зарегался на их онлайн страницу. Открыл эту же вкладку на второй странице. На одной нажал перевести деньги. Вернулся на другую, поидее у тебя там деньги еще не переведены. Но ты снова нажал перевести деньги.
    И вот после нажатия кнопки естественно банк еще раз проверит, а есть ли деньги.

    2. Или еще ситуация, ты зашел в интернет магазин, увидел товар где написано на складе осталось 1шт. Ты такой умный открыл этот же сайт во второй вкладке. Купил его в первой вкладке, вернулся во вторую, естественно меню старое. Нажал купить, система после нажатия проверит, а этот товар точно еще есть на складе или нет.

    JS тут вообще не причем, просто надо проверять перед тем как сделать какую то операцию.
     
  4. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @troinfo12, авторизация привязана к сессии, сессия привязана к сессионному идентификатору, сессионный идентификатор сохраняется в кукисах. При логауте должна разрываться связь авторизация - сессия. Кукисы остаются, сессия остаётся, но в сессии уже нет данных авторизации, поэтому должен быть запрет на редактирование сохранение и тд.
    Задача я так понимаю сводиться к перенаправлению на страницу авторизации.
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    Открывать параллельно приложение в новой вкладке и т.д. нужно ручками. Запрограммировать вам нужно только это:
    Что норма для авторизации. Т.е. вам нужно просто сделать авторизацию. А в задании всего лишь описан ручной тест (эксперимент).
    --- Добавлено ---
    P.S. Если все уже реализовано, вас просто попросили провести эксперимент. Возможно, заподозрили, что авторизация не работает/работает не так, как должна.
     
    artoodetoo нравится это.
  6. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    просто был тест на понимание
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    не пытайся решать проблемы доступа на javascript. есть аксиома: всё что приходит от пользователя (из браузера или другого клиента), может быть подделано. оно не заслуживает доверия.

    я уверен что авторы тестового задания ждут от тебя ровно обратного: понимания что авторизация происходит на сервере. твоя задача сделать старое значение в куке нерабочим. сессия должна умереть на сервере.

    если для идентификации пользователя используется стандартная сессия PHP, то вот твоя палочка-выручалочка:
    https://www.php.net/manual/ru/function.session-destroy
    ну прям как доктор прописал! тебе именно этот "побочный эффект" и нужен :)



    --- Добавлено ---



    P.S. в раздел "Решения, алгоритмы" ты можешь добавлять решения и алгоритмы. Внезапно™!
    А вопросы "как сделать то или это" помещай в другие разделы. Тема перемещена.