ruby-on-rails - rails - gema devise
Especifique qué controladores excluir de before_filter (4)
Estoy usando el dispositivo para la autenticación y tengo algunos filtros_antes en el controlador de mi aplicación. El problema que estoy viendo es que cuando intento cerrar la sesión, el before_filter intercepta eso y me mantiene en la vista que he configurado en el before_filter. ¿Hay alguna manera de especificar qué controladores deberían excluirse del controlador de la aplicación o algún otro archivo?
En config / application.rb
config.to_prepare do
Devise::SessionsController.skip_before_filter :authenticate_user!
end
Referenciado por:
¿Cómo omitir un before_filter para SessionsController de Devise?
En el controlador en el que desea omitir un filtro anterior especificado en un controlador heredado, puede indicarle a los rieles que omitan el filtro
class ApplicationController
before_filter :authenticate_user!
end
class SessionsController < ApplicationController
skip_before_filter :authenticate_user!
end
Las respuestas anteriores son buenas excepto: DEPRECATION WARNING: skip_before_filter is deprecated and will be removed in Rails 5.1. Use skip_before_action instead.
DEPRECATION WARNING: skip_before_filter is deprecated and will be removed in Rails 5.1. Use skip_before_action instead.
Por lo tanto, utilice before_action
y skip_before_action
lugar de *-filter
.
Puede calificar un filtro con :only
o :except
.
before_filter :filter_name, :except => [:action1, :action2]
O si el filtro (como ahora lo veo es el caso en su situación) se define en ApplicationController
y desea skip_before_filter
en un controlador de subclase, puede usar un skip_before_filter
con las mismas calificaciones en el controlador de la subclase:
skip_before_filter :filter_name, :except => [:action1, :action2]