Ruby 会话数据未保存在Sinatra简单身份验证中
我为Sinatra创建了一个简单的身份验证,但是会话对象似乎正在清理所有自定义密钥。例如,当用户登录时:Ruby 会话数据未保存在Sinatra简单身份验证中,ruby,sinatra,rack,Ruby,Sinatra,Rack,我为Sinatra创建了一个简单的身份验证,但是会话对象似乎正在清理所有自定义密钥。例如,当用户登录时: session[:user_id] = current_user.id 这将有效地存储在当前请求的会话对象中。当新请求发生时,会话[:user_id]不再存在。会话处于活动状态,Cookie已启用。我尝试了所有我无法找出错误的方法(以下是所有相关代码:) 应用程序: use Rack::Session::Cookie , :secret => "82e042cd6fde2bf176
session[:user_id] = current_user.id
这将有效地存储在当前请求的会话对象中。当新请求发生时,会话[:user_id]不再存在。会话处于活动状态,Cookie已启用。我尝试了所有我无法找出错误的方法(以下是所有相关代码:)
应用程序:
use Rack::Session::Cookie , :secret => "82e042cd6fde2bf1764f777236db799e"
enable :sessions # for flash messages
助手:
def require_auth
unless session[:user_id]
flash[:error] = "You need to be logged in."
redirect to("/login")
end
end
def current_user
@current_user ||= User.find_by_id(session[:user_id]) if session[:user_id]
end
签名:
authorized_user = User.authenticate(params[:email],params[:password])
if authorized_user
# update session / redirect
session[:user_id] = authorized_user.mongo_id.to_s
session.options[:expire_after] = 2592000 unless params[:remember].nil? # 30 days
# redirect to the wizard
flash[:info] = "Welcome back #{authorized_user.first_name}"
redirect to("/home")
您可能应该尝试为会话处理设置一个提供程序,例如。g、 :
use Rack::Session::Pool, :expire_after => 2592000
很乐意提供帮助。尝试设置会话处理的提供程序,例如。g、 :
使用Rack::Session::Pool,:expire_after=>2592000
显然这是有效的,我在文档中没有看到。将此作为解决方案发布,我将接受它!谢谢