2010-08-25 30 views
9

Tôi đang phát triển một ứng dụng Rails3 sử dụng Devise để xác thực. Trong quá trình làm việc, dữ liệu như patient_id được lưu trữ trong phiên. Tuy nhiên, khi người dùng đăng xuất, phiên cần được xóa. Tôi không thể tìm ra cách đặt lại dữ liệu phiên vì Devise xử lý đăng nhập/đăng xuất của người dùng và tôi không có quyền kiểm soát nó.Rails 3 thiết lập lại phiên sử dụng devise

Làm cách nào để xử lý tình huống này?

+0

Tôi đang sử dụng Devise và có vẻ như nó sẽ tự động đặt lại các phiên khi đăng xuất. Nhận ra điều này là cũ hơn một bài cũ hơn đã làm Devise thay đổi hành vi kể từ khi bạn hỏi câu hỏi, hoặc tôi thiếu một cái gì đó? – Yarin

Trả lời

14

Overwrite lập mưu :: SessionsController như thế này:

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

Don Đừng quên di chuyển các khung nhìn ra ngoài đến đúng vị trí (xem/đưa ra/phiên tới các khung nhìn/phiên) và sửa đổi đường đi để trỏ đến bộ điều khiển của bạn. Ví dụ:

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

Xem tài liệu hướng dẫn về github để biết thêm chi tiết hoặc liên kết được đăng bởi Bill.

+0

Cảm ơn bạn, kỹ thuật trên sẽ hoạt động. Nó sạch hơn so với những gì tôi hiện đang có như một giải pháp: https://gist.github.com/735857. Điều này một lần nữa chứng tỏ sự không có khả năng của tôi để đi qua các tài liệu đúng cách. Tôi sẽ chuyển sang giải pháp của bạn. –

+0

Có lẽ tôi đang làm điều gì đó sai, nhưng tôi cần phải đăng nhập một người dùng và gửi chúng đến một trang mới ... vì vậy chỉ cần "reset_session" làm việc cho tôi. – rtfminc

Các vấn đề liên quan