【发布时间】:2013-09-29 10:18:10
【问题描述】:
我需要将 cookie 从“会话”类型更改为“持久”类型。此外,我需要让它与“omniauth-facebook”一起工作。在下面的示例中,一切正常,但是当我使用omniauth 时,cookie 根本没有设置。这是我写的测试代码:
需要“红宝石” 需要'sinatra' 需要'encrypted_cookie' 需要'omniauth-facebook' 使用 Rack::Session::EncryptedCookie, :secret => "fdstopitot9dasdsdasjm4kmt0èu54cmjff83d2'ìel.4j9c" 使用 OmniAuth::Builder 做 提供者:facebook,'290594154312564','a26bcf9d7e254db82566f31c9d72c94e' 结尾 得到“/”做 “持久 | 会话 | /auth/facebook” 结尾 得到“/持久”做 response.set_cookie 'test', {:value=> "persistent", :max_age => 2592000.to_s} 重定向“/” 结尾 得到“/会话”做 response.set_cookie 'test', {:value=> "session"} 重定向“/” 结尾 获取 '/auth/:provider/callback' 做 response.set_cookie 'test', {:value=> "facebook_callback"} 重定向“/” 结尾单击/session 或/persistent 可以看到cookie 发生了相应的变化(在Chrome 中,您可以使用F12 > Resources > Cookies > localhost 检查cookie。
点击/auth/facebook cookie 根本没有设置。
响应标头似乎没问题(在 Chrome 中,您可以使用 F12 > Network > 标头看到 http 响应标头)。我只用 Chrome 测试过。
HTTP/1.1 302 暂时移动 X 框架选项:SAMEORIGIN 位置:http://localhost:4567/ X-XSS-防护:1;模式=块 内容类型:text/html;charset=utf-8 内容长度:0 设置 Cookie:test=facebook_callback 设置 Cookie: rack.session=X8U8kupLYzIurjMS4pSCQfF%2BzPpjQhJMqyMd84o8BQdQLwmhagL1UkZ4oi7%2F%0A9bEN%2B0FZDDUAeQD%2BRizczwvepQi%2FbcMwaAjpkFcXhiWuJPQ%3D%0A;路径=/ X-Content-Type-Options: nosniff 连接:保持活动 服务器:thin 1.5.1 代号 Straight Razor有什么线索吗?
【问题讨论】:
-
这是一个小问题,只需添加 cookie 的路径: response.set_cookie 'test', {:value=> "facebook_callback", :path => "/"} 我应该删除问题?
-
您可以发布您的答案并接受它;其他人将来可能会发现它很有用。
标签: session cookies sinatra omniauth rack