before_filter с устройством - PullRequest
11 голосов
/ 17 мая 2011

Я использую встроенную в Devise before_filter :authenticate_user!. Я хочу вызвать свой собственный пользовательский метод в помощнике приложения, если пользователь не выполняет фильтр before (пытается выполнить действие при выходе из системы) Как и где я могу это сделать?

Ответы [ 2 ]

7 голосов
/ 17 мая 2011

Я бы написал кастом до фильтра, который использует user_signed_in?.Это просто вернет логическое значение и не будет выполнять никаких действий типа перенаправления, которые authenticate_user! делает.

Итак, вы могли бы написать фильтр перед следующим образом:

before_filter :custom_user_auth
...
def custom_user_auth
    unless user_signed_in?
        # Do custom stuff, ultimately restricting access to the 
        # ...protected resource if it needs to be
    end
end

Doобратите внимание, что фильтр before не защитит ваш ресурс от неавторизованных пользователей, если только внутренняя область этого оператора unless не перенаправит или не отобразит.

7 голосов
/ 17 мая 2011

Вместо вызова before_filter :authenticate_user! напишите свою собственную функцию в вашем контроллере, которая вызывает authenticate_user!. Что-то вроде:

before_filter :logged_in

...

private
def logged_in
  your_function
  authenticate_user!
end
...