【问题标题】:Session destroy not working in rails app?会话销毁在 Rails 应用程序中不起作用?
【发布时间】:2015-07-13 05:45:57
【问题描述】:

我在我的会话控制器中使用了omniauth-salesforce 我有以下代码,即使我注销会话仍然存在,我已经尝试了 session.clearreset_session 在销毁方法中但没有任何效果,只有在之后才能登录清除浏览器缓存

class SessionsController < ApplicationController
  def create
    user = User.from_omniauth(env["omniauth.auth"])
    session[:user_id] = user.id
    redirect_to root_url
  end

  def destroy
    session[:user_id] = nil
    redirect_to root_url
  end
end

如何在退出时删除会话?

【问题讨论】:

  • 您好先生,您是如何解决这个问题的?我正在使用omniauth Facebook 和twitter gems,最终遇到了同样的问题。

标签: ruby-on-rails session salesforce omniauth


【解决方案1】:

会话类似于普通的哈希,所以下面的东西应该可以工作。

session.delete(:user_id)

【讨论】:

  • 我在上面的会话控制器销毁方法中添加但仍然无法正常工作
  • 意味着它没有从你说的会话中删除 user_id ?
  • 当我将 session[:user_id] 放在 destroy 方法的开头时,它在这段代码之后返回 1 (session[:user_id] = nil),值设置为 nil
【解决方案2】:

使用这个

 session[:user_id] = nil if session[:user_id]

【讨论】:

    猜你喜欢
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多