Skip to content

How To: Do not redirect to login page after session timeout

preetamreddy edited this page Apr 29, 2012 · 6 revisions

By default, devise will redirect to login page after session timeout, but it is weird if you visit a page do not need login.

To solve this problem, you can create custom failure app.

In config/initializers/devise.rb configure your custom failure app:

config.warden do |manager|
  manager.failure_app = CustomFailureApp
end

And in lib/custom_failure_app.rb:

class CustomFailureApp < Devise::FailureApp
  def redirect
    message = warden.message || warden_options[:message]
    if message == :timeout     
      redirect_to attempted_path
    else 
      super
    end
  end
end

If you're getting an uninitialized constant CustomFailureApp error, after you've put the CustomFailureApp class under your /lib directory, make sure to autoload your lib files.

Clone this wiki locally