1

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

有没有另一种方法可以做到这一点,这甚至可能,还是我只是疯了?

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

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

4

2 回答 2

1

您只能为当前域编写 cookie - 因此,如果您希望通过 net/http 从 domaina.com 有效连接到 domainb.com,请读取从 domainb.com 返回的 cookie 并在将用户重定向到之前为用户预设该 cookie domainb.com,那就不行了。

但是,如果您只是想从 domainb.com 读取返回的 cookie 并在 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

如果您想在 2 个域之间实现自动登录,我发现最好的方法是:

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

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

于 2011-09-21T08:26:06.283 回答
1

This sounds like a good fit for authentication_token based login, where as long as the link is correct (e.g. http://www.example.com/posts/new?auth_token=1asdfj2828728we924834), the user is auto-logged in. Check out Devise: http://www.hyperionreactor.net/blog/token-based-authentication-rails-3-and-rails-2

于 2011-09-21T11:51:41.293 回答