Rails: выйти зарегистрированный пользователь на событие - PullRequest
2 голосов
/ 05 апреля 2011

Я использую Rail3 с Devise gem.Он отлично работает, когда вам нужно заблокировать пользователя от входа в систему.

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

Вот типичный пример использования:

Данный администратор, когда обнаруживает подозрительную активность определенного пользователя, блокирует его malicious_user.lock('locking-reason')

% can config/initializers/session_store.rb
AppFoo::Application.config.session_store :cookie_store, :key => '_foo_session'

Ответы [ 3 ]

1 голос
/ 05 апреля 2011

возможно, самый простой способ - перенаправить пользователя к действию выхода из системы, когда вы заблокируете его так:

malicious_user.lock('locking-reason')
redirect_to '/logout' and return

Я не знаком с Devise, так что это может быть не лучшим решением или даже возможным, но именно так я бы подошел к проблеме

1 голос
/ 05 апреля 2011

Используйте before_filter в ApplicationController, который будет делать следующее

 before_filter :kick_out_blocked_user


 protected

 def kick_out_blocked_user       
   unless current_user.try(:active?)
      redirect_to destroy_user_session_path        
   end
 end
1 голос
/ 05 апреля 2011

Учитывая отсутствие состояния HTTP, вы не можете сразу выйти из системы, потому что вам нужно будет подождать, пока они не сделают еще один запрос на ваш сервер. Я полагаю, вы могли бы обойти это с помощью push-службы, но это было бы излишним.

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

Пример:

Пользователь подозревается в недопустимой активности

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

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

Проверка кода для входа в систему и внесения в черный список пользователей.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...