Rails 3 reset session using devise

2019-04-21 14:56发布

问题:

I am developing a Rails3 application using Devise for authentication. In the course of the workflow, data like patient_id is stored in the session. However, when the user log's out, the session needs to be cleared. I am unable to figure out how to reset session data since Devise handles users login / logout and I not having control over it.

How to handle this situation?

回答1:

Overwrite Devise::SessionsController like this:

class SessionsController < Devise::SessionsController
  respond_to :html
  def destroy
    super
    reset_session
  end
end

Don't forget to move the devise views to the right place (views/devise/sessions to views/sessions) and modify the devise route to point to your controller. For example:

devise_for :users, :controllers => { :sessions => "sessions" }

See the devise docs on github for more details or the link posted by Bill.



回答2:

I believe you'd have to over ride the devise controllers, there's a good post here on that:

Devise, CanCan and customizing devise controllers