Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Cookies-我可能对ruby/rails很着迷_Ruby On Rails_Ruby_Cookies_Curl_Net Http - Fatal编程技术网

Ruby on rails Cookies-我可能对ruby/rails很着迷

Ruby on rails Cookies-我可能对ruby/rails很着迷,ruby-on-rails,ruby,cookies,curl,net-http,Ruby On Rails,Ruby,Cookies,Curl,Net Http,是否可以使用net/http或curl登录,保存cookie响应,然后将cookie写入用户浏览器,这样我就可以“推式登录”(在某种意义上) 有没有其他方法可以做到这一点,这是可能的,还是我只是疯了 我知道如何使用net/http登录,保存cookie并在服务器端执行操作 我只是不想花时间将cookie保存到数据库,然后将其写入浏览器,如果由于安全限制而无法重定向浏览器,则成功重定向浏览器。您只能为当前域编写cookie-因此如果您希望通过以下方式从domaina.com有效连接到domainb

是否可以使用net/http或curl登录,保存cookie响应,然后将cookie写入用户浏览器,这样我就可以“推式登录”(在某种意义上)

有没有其他方法可以做到这一点,这是可能的,还是我只是疯了

我知道如何使用net/http登录,保存cookie并在服务器端执行操作


我只是不想花时间将cookie保存到数据库,然后将其写入浏览器,如果由于安全限制而无法重定向浏览器,则成功重定向浏览器。

您只能为当前域编写cookie-因此如果您希望通过以下方式从domaina.com有效连接到domainb.comnet/http,读取从domainb.com返回的cookie,并在将用户重定向到domainb.com之前为其预设cookie,则该操作将不起作用

但是,如果您只是想读取从domainb.com返回的cookies并在domaina.com上有效地复制它们,那么您没有理由不能这样做。比如:

# perform your request...
# once the response has been returned, loop through each cookie
response.get_fields('set-cookie').each do |cookie|
  # set your local cookie here
end
如果您想在两个域之间实现自动登录,我发现最好的方法是:

1) domaina.com对domainb.com的API说:“嘿,我这里有用户ABC,我能给他们一个身份验证令牌吗?”。 2) domainb.com的API为该用户创建一个令牌,将到期时间限制为1分钟,然后将其作为响应发送给domaina.com 3) domaina.com使用作为参数传递的身份验证令牌将用户重定向到domainb.com 4) domainb.com接收用户的请求(来自重定向),在DB中查找令牌,然后自动登录用户(如果找到)


当然,这需要你控制两个域的系统。。。如果您不这样做,oauth很可能是您最好的跨站点身份验证机制。

这听起来很适合基于令牌的身份验证登录,只要链接正确(例如),用户就会自动登录。查看Desive:

Ryan,谢谢你的帮助,它是100%正确的。然而,当我沿着这条路走的时候,我意外地发现了一种为另一个域编写cookie的方法。我写了一封信,向所有主要的浏览器供应商提交了bug。主要的安全漏洞。