Как разрешить вход с помощью устройства, если пользователь уже аутентифицирован?

Есть приложение, которое создает нового пользователя при первом открытии сайта (если у вас нет файла cookie). Также вы можете войти как другой пользователь. Проблема в том, что Devise не позволяет войти в систему как уже аутентифицированный пользователь. Даже если я переопределю require_no_authentication в SessionsController, надзиратель все еще помнит пользователя через сеанс.

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

Итак, вопрос в том, должен ли я создать новую стратегию Warden, и если да, то какие проверки я должен там делать? Или есть другой способ?


person nateless    schedule 19.01.2015    source источник


Ответы (1)


Просто сбросьте сеанс в нужном действии. Вы можете просто сделать первую строку reset_session или сделать ее перед фильтром, например:

before_filter :deauthorize_user, only: [ :some_action ]

def deauthorize_user
  reset_session
end
person Brad Werth    schedule 19.01.2015
comment
Я думал об этом, но в этом случае, если пользователь ошибется с паролем, нам нужно создать новую учетную запись, потому что токен CSRF будет недействителен при втором запросе, и поэтому нам нужно получить новый токен перед следующей попыткой (мы используем AJAX для подписи). в). - person nateless; 19.01.2015