# In config/application.rb
module YourAppNameHere
class Application < Rails::Application
# Whatever else is already here...
# The part to add
config.to_prepare do
Devise::SessionsController.skip_before_filter :your_before_filter_here
end
end
end
module DeviseSessionsControllerDecorator
extend ActiveSupport::Concern
included do
skip_before_filter :your_filter_name
end
end
Devise::SessionsController.send(:include, DeviseSessionsControllerDecorator)
class ApplicationController < ActionController::Base
# ...
before_filter :do_something
def do_something
unless params[:controller] == 'devise/sessions'
# ...
end
end
end
7条答案
按热度按时间8gsdolmq1#
这是我的同事刚刚向我展示的一种方法:
dw1jzc5e2#
我最近在
application_controller
中遇到了这个问题,我使用skip_before_filter
解决了这个问题。Rails〈4
导轨〉= 4
gzszwxb43#
我们做了这样的事情:
首先,创建自己的会话控制器,确保正确继承:
那就确定路线
或者,您可以对Devise的会话控制器进行补丁。
5f0d552i4#
这是lib/devise_sessions_controller_decorator中的另一种方法。rb:
因为类在开发模式下不会被缓存,所以您可能需要在config/environments/development中添加类似的内容。rb:
xj3cbfub5#
在我的同事向我展示我在另一个答案中发帖的方式之前,我这样做了。我把这个贴出来,以防你觉得它更简单。
jm81lzqq6#
你可以简单地检查你的filter方法是否是devise controller。
ktca8awb7#
新答案
如何将before_filter Package 在unless块中,通过
params[:controller]
进行过滤旧答案
只授权哪些操作应该使用before过滤器
并授权其他人
found this here