#ruby-on-rails-3 #authentication #login #devise
#ruby-on-rails-3 #аутентификация #разработка
Вопрос:
пожалуйста, как и где я могу разместить дополнительную логику аутентификации в devise?
я добавил пользовательский столбец с именем expire_date в свою таблицу users, и это столбец даты.
я хочу дополнительное требование о том, что дата там не должна быть более поздней, чем сегодняшняя дата, прежде чем разрешить их аутентификацию.
пожалуйста, где я могу добавить эту логику?
Спасибо
Ответ №1:
Или вы можете переопределить active_for_authentication
? метод в вашей пользовательской модели
def active_for_authentication?
super amp;amp; (test your dates here)
end
Если он неактивен, он сгенерирует флэш-сообщение о том, что учетная запись неактивна. Если вы хотите что-то другое, например, «Этот пользователь еще не активен», измените параметр для :inactive
в файле config/locales/devise.en.yml
. Это взято в основном из Devise wiki.
Ответ №2:
Создайте свой собственный контроллер, который наследуется от Devise::SessionsController
приложение / контроллеры / пользователи /sessions_controller.rb
class Users::SessionsController < Devise::SessionsController
...
Overwrite the new method
...
Change what else you need to change
...
end
Добавьте новый маршрут в файл routes, и все готово.