Придумать - Как я могу запретить определенным пользователям вход в систему? - PullRequest
101 голосов
/ 14 мая 2011

Я использую Devise для аутентификации в своем приложении.

Как запретить некоторым пользователям вход в систему - что-то вроде отключения пользователя?

Ответы [ 4 ]

136 голосов
/ 14 мая 2011

Сделай так:

Создайте столбец с именем is_active для модели User.

Затем добавьте следующий код к модели User:

class User < ActiveRecord::Base
  #this method is called by devise to check for "active" state of the model
  def active_for_authentication?
    #remember to call the super
    #then put our own check to determine "active" state using 
    #our own "is_active" column
    super and self.is_active?
  end
end

UPDATE

Как отмечает Мэтт Хаггинс, метод теперь называется active_for_authentication? ( Документация )

15 голосов
/ 09 октября 2016

Добавить столбец к модели User: allowed_to_log_in.

Затем добавьте это к /app/models/user.rb:

def active_for_authentication?
    super and self.allowed_to_log_in?
end

Если вы хотите сообщить пользователю специальное сообщение, вы также можете добавить это:

def inactive_message
    "You are not allowed to log in."
end

Я думаю, что это очень важно, потому что стандартное сообщение от Devise гласит:

"Ваш аккаунт еще не активирован."

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

0 голосов
/ 14 мая 2011

Похоже, вас может заинтересовать канкан

0 голосов
/ 14 мая 2011

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

Авторизация - популярная тема, и есть целый список драгоценных камней, которые могут вам помочь:
http://ruby -toolbox.com / категории / rails_authorization.html
Выбирай.

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