【问题标题】:Unable to Sign-out using Devise无法使用设计退出
【发布时间】:2012-04-03 15:34:53
【问题描述】:

我有一个带有 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 并且在那里工作正常。本地开发模式有什么问题?

【问题讨论】:

    标签: devise ruby-on-rails-3.2


    【解决方案1】:

    糟糕...回答晚了。

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

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

    domain: 'lvh.me'
    

    【讨论】:

      猜你喜欢
      • 2012-10-24
      • 2012-06-18
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      • 2016-11-25
      相关资源
      最近更新 更多