重定向后机架会话密钥不存在

问题描述

我正在使用 Rack 和 ActiveRecord 构建 Sinatra 应用程序,在调用 Post "/login" 后,我试图将会话哈希键 session[:user_id] 设置为等于 User.id。

@user = User.find_by(:username => params[:username])
 if @user && @user.authenticate(params[:password])
   session[:user_id] = @user.id
   redirect "/teams"

我在应用程序控制器中设置了 enable :sessionsset :session_secret,"my_secret"。在 pry 中 session[:user_id] 设置正确,但重定向后 session[:user_id] 键消失。会话哈希的其余部分仍然存在,但只有我设置的键和值不存在。我也尝试使用:

use Rack::Session::Cookie,:key => 'rack.session',:path => '/',:secret => 'your_secret'

导致重定向后出现此消息

#<Rack::Session::Abstract::PersistedSecure::SecureSessionHash:0x3fd6ec91f480 not yet loaded>

会不会是 Sinatra 或 Rack 的坏版本?我正在运行 Sinatra 2.1.0 和 Rack 2.2.3。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)