【发布时间】:2016-02-23 07:17:00
【问题描述】:
我正在尝试使用会话机制来存储这样记录的用户的信息: session[:user_id]=@user_id ,并且没问题。
但是当新用户登录应用时,变量 session[:user_id] 会更新为新用户 id,使第一个用户使用无效 id 执行请求。
我使用了不同的浏览器,私有浏览器,虚拟机中的一个浏览器和主机中的另一个浏览器,但仍然出现问题。
我很欣赏一些建议。在多个用户之间共享会话是否正常?还有另一种方法来存储一些特定的数据,并防止用户之间共享?我认为那个会话是独一无二的,为什么那个变量会改变? cookie 变量也是如此。
编辑:
应用程序控制器
def sign_in
if(password != "" && @user_id!= "" && jenkinsip != "")
@client = JenkinsApi::Client.new(:server_url => jenkinsip, :username=> @user_id, :password=> password)
if(@client.get_jenkins_version != nil)
session[:user_id]=@user_id
end
end
end
在html中
【问题讨论】:
-
默认情况下,会话不会在多个用户(不同的浏览器、PC、...)之间共享。如果是这样,那么您的代码一定有问题。请提供您的代码、使用地点和方式
session -
我认为您在一个浏览器中使用一个会话并且只更改用户凭据,对吧?如果是这样,您应该以某种方式存储此类特定数据,避免在这些用户之间共享,例如作为带有@user_id 键的哈希:
{ user1 => data1, user2 => data2 }。 -
我在虚拟机和主机中使用不同的浏览器尝试了上面的代码。
标签: ruby-on-rails session login