我想知道是否有办法覆盖应用程序控制器中的设备会话控制器创建操作。所以我有这个代码
def check_concurrent_session
if is_already_logged_in?
flash[:error] = "We're sorry, you can't login to two places concurrently."
sign_out_and_redirect(current_user)
end
end
我需要在网站上的任何地方运行,然后在设计会话控制器中创建操作..
所以我在应用程序控制器上有一个before_filter,但是我可以排除一个类似
的控制器before_filter :check_concurrent_session, :except => ["somecontoller"]
显然这是错误的,但你明白了。我知道我可以创建自己的会话控制器并继承设计,但我想知道是否可以从应用程序控制器中执行此操作
答案 0 :(得分:1)
before_filter :check_concurrent_session
def check_concurrent_session
return if controller_name == 'some_controller'
if is_already_logged_in?
flash[:error] = "We're sorry, you can't login to two places concurrently."
sign_out_and_redirect(current_user)
end
end
答案 1 :(得分:1)
在application.rb
module XXX
class Application < Rails::Application
...
config.to_prepare do
Devise::SessionsController.skip_before_filter :check_concurrent_session
end
end
end