дополнительная логика в разработке аутентификации

#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, и все готово.