ФорумПрограммированиеPHP для идиотов → Одноразовые полномочия

Одноразовые полномочия

  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 28 февраля 2014 г. 2:29

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

    Пользователь закипит, если по ссылке заставить его вводить имя/пароль. То есть пускаем его просто благодаря наличию "секрета" в ссылке. При том возможно ему понадобится какие-то галочки расставить, что-то написать, короче полноценная сессия работы. Но без пароля. Но только в ограниченном контексте, чтобы сука перехвата ссылки на отписку не хватило для кражи аккаунта.

    Хочу услышать правильные термины и узнать где есть примеры и заготовки такой секурности. Симфони в первую очередь, но сгодится любая инфа хоть про питон.
    ιιlllιlllι унц-унц
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 28 февраля 2014 г. 3:27, спустя 57 минут 54 секунды

    Я для своих проектов так не заморачивался, ну т.е. надо пользователю авторизоваться, если он не авторизован для управления подписками. В одном проекте у меня отписка только делается и как такового управления нет. В другом подразумевается что сессия дается на год и случаев что пользователь зашел с другого бразура, почистил куки и т.п. очень мало

    Но на Django я бы это сделал за 15 минут. Вкратце:

    • Делается декоратор, который добавляется для вьюхи некое свойство, типа view._temporary_user_allowed.
    • Этим декоратором помечаются все нужные вьюхи
    • Добавляется Middleware.process_view:

      • В которой проверяется вьха на наличие флага view._temporary_user_allowed, если он есть, то создаем пользователя и инъектим в реквест

      • Если нет такого флага, но есть пользователь, то делаем ему logout

    Все!

    adw/0
  • artoodetoo

    Сообщения: 5139 Репутация: N Группа: в ухо

    Spritz 28 февраля 2014 г. 3:32, спустя 5 минут 3 секунды

    thanks
    ιιlllιlllι унц-унц

Пожалуйста, авторизуйтесь, чтобы написать комментарий!