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