我需要将 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
有什么线索吗?