重定向后会丢失Session

3
当用户访问“index”页面时,我会将其重定向到“show”页面。正如您在“index”中所看到的,我正在设置一个变量。
  skip_before_filter :verify_authenticity_token, only: :show


  def show
     debugger
     render inline: "<h3>hello</h3>"
  end


  def index
     session[:user] = "hans"
     debugger
     redirect_to action: "show"
  end

当我在show操作中使用调试器时:

   session 
     =>  #<ActionDispatch::Request::Session:0x7f9a8e0882e0 not yet loaded>

当我强制初始化会话时,使用以下命令:
   session[:init] = true

接下来有一个会话,但是 session[:user] == nil 并且 session_id 与我在 index 中获得的 session_id 不同。

我做错了什么? 为什么重定向后会启动新会话?

谢谢


这很奇怪,我没有观察到这样的行为。我的session数据在目标动作中可以正常访问。你可能还有一些自定义路由用于show动作,因为你不需要传递一个id参数吗? - Matouš Borák
1个回答

0

我怀疑调试器是你的问题,因为它中断了检索会话变量的过程。如果我执行以下操作:

class PostsController < ApplicationController
  def index
    session[:user] = "hans"
    redirect_to action: "show"
  end

  def show
    render inline: "USER:" + session[:user]
  end
end

我输入了网址:/posts/index

然后我的输出是:"用户:Hans"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接