2010-08-25 4 views
9

Я разрабатываю приложение Rails3, используя Devise для аутентификации. В ходе рабочего процесса данные, такие как patient_id, хранятся в сеансе. Однако, когда пользователь выходит из системы, сеанс должен быть очищен. Я не могу понять, как сбросить данные сеанса, так как Devise обрабатывает логин/выход из системы, и я не контролирую его.Rails 3 сеанс сброса с использованием утилиты

Как справиться с этой ситуацией?

+0

Я использую Devise, и кажется, что он автоматически перезапускает сеансы при выходе из системы. Поймите, что это старая старая должность - изменило поведение Devise, так как вы задали вопрос, или я чего-то не хватает? – Yarin

ответ

14

перезапись Разрабатывают :: SessionsController так:

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

Дон Не забудьте переместить вид разработки в нужное место (просмотры/разработка/сеансы для просмотров/сеансов) и изменить маршрут разработки, чтобы указать на ваш контроллер. Например:

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

См. Документацию по разработке на github для получения более подробной информации или ссылки, размещенной Биллом.

+0

Спасибо, вышеприведенная техника должна работать. Это чище, чем то, что я сейчас имею в качестве решения: https://gist.github.com/735857. Это еще раз доказывает мою неспособность правильно пройти через документы. Я перейду к вашему решению. –

+0

Возможно, я делаю что-то неправильно, но мне нужно было вывести пользователя из системы и отправить его на новую страницу ... так что для меня работала только «reset_session». – rtfminc

Смежные вопросы