无法使用Devise注销

时间:2012-04-03 15:34:54

标签: devise ruby-on-rails-3.2

我有一个带有Devise的Rails 3.2应用程序,用于验证用户身份。

在本地开发模式下,“注销”链接无效。它将我重定向到主页,而不是显示登录页面,并且会话不会被销毁。但是在Heroku上,单击“注销”链接会正确地将我退出并向我显示登录页面,从而破坏用户会话。

在应用程序.haml布局页面中,“注销”页面的链接是:

= link_to "Sign Out", destroy_user_session_path, :method => :delete

相关路线:

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

      new_user_session  GET       /users/sign_in(.:format)       sessions#new
          user_session  POST      /users/sign_in(.:format)       sessions#create
  destroy_user_session  DELETE    /users/sign_out(.:format)      sessions#destroy

我在我的应用中继承了Devise::SessionsControllerSessionsController,如下所示:

  class SessionsController < Devise::SessionsController
    layout 'devise_layout'
  end

现在奇怪的情况是,在会话过期后默认为30分钟,我再次登录并单击“注销”链接,它会将我重定向回登录页面。

所有在Heroku上工作正常,在本地失败。我无法弄清楚当地发生了什么。

我不认为我在这里做错了什么,因为它已经部署到Heroku并且在那里工作正常。本地开发模式有什么问题?

1 个答案:

答案 0 :(得分:4)

哎呀......迟到了。

无论如何,我能够找出问题所在。实际上该应用程序是基于子域的。因此,我使用lvh.me:3000在本地进行测试,localhost:3000不支持子域。

解决方法是将子域设置为"lvh.me" in session_store.rb.

domain: 'lvh.me'