为什么Rails会话在多个用户之间共享

时间:2015-11-20 17:39:27

标签: ruby-on-rails session login

我正在尝试使用会话机制来存储记录的用户信息,如下所示: session [:user_id] = @ user_id ,确定无误。

但是当新用户在应用中登录时,变量会话[:user_id] 会更新为新的用户ID,使第一个用户ID执行无效的请求。

我使用了不同的浏览器,私有浏览器,虚拟机中的浏览器和主机中的另一个浏览器,但仍然遇到了问题。

我很感激一些建议。多个用户之间共享会话是否正常?还有另一种存储某些特定数据的方法,并阻止用户之间的共享?我认为这个会话是独一无二的,为什么变量会发生变化?对于cookies变量也是如此。

修改

application_controller

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

in html

2 个答案:

答案 0 :(得分:3)

每次调用session[:user_id]=@user_id时,会话[:user_id]都被设置为@user_id变量设置为的任何值。

尝试使用||=代替=

将会话设置为session[:user_id]||= @user_id,仅在会话[:user_id]未定义时将会话[:user_id]设置为@user_id。

答案 1 :(得分:1)

按照 koxtra 的优秀答案和 还可以在[(UILabel *)[self performSelector:NSSelectorFromString(@"bottomText")] setText:@"Test"]; gem上查看用户身份验证。

设计会像用户登录,注册,创建会话和更多功能一样为您做所有事情。您只需要安装Devise 在您的rails应用程序中。