我有一个带有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::SessionsController
到SessionsController
,如下所示:
class SessionsController < Devise::SessionsController
layout 'devise_layout'
end
现在奇怪的情况是,在会话过期后默认为30分钟,我再次登录并单击“注销”链接,它会将我重定向回登录页面。
所有在Heroku上工作正常,在本地失败。我无法弄清楚当地发生了什么。
我不认为我在这里做错了什么,因为它已经部署到Heroku并且在那里工作正常。本地开发模式有什么问题?
答案 0 :(得分:4)
哎呀......迟到了。
无论如何,我能够找出问题所在。实际上该应用程序是基于子域的。因此,我使用lvh.me:3000
在本地进行测试,localhost:3000
不支持子域。
解决方法是将子域设置为"lvh.me" in session_store.rb.
domain: 'lvh.me'