从Google身份验证返回后,控制器中的Flash和Session均为空,在Rails 5中

问题描述 投票:2回答:1

我正在使用https://github.com/basecamp/google_sign_in将Google身份验证添加到我的大型Rails应用中。

gem中的身份验证流是:

  1. 用户单击将其发送到authorization controller的按钮。
  2. 授权控制器然后将2个变量设置为Flash,并重定向到google oauth同意书。
  3. 用户同意并将其发送回回调URL。
  4. 然后,来自google_sign_in的回调控制器应能够读取Flash和verify the callback的内容,然后再次重定向到用户代码以使用户成为auth令牌。

问题在于,回调控制器中的flash和session都为空。

什么会导致Rails清空Flash和Google的回叫会话?

ruby-on-rails ruby-on-rails-5 google-oauth
1个回答
0
投票

这是由于将同一网站政策设置为严格。将其设置为宽松允许GET重定向提供Flash和其他Cookie。

严格设置是rails中的默认设置,但已更改为宽松设置,因为GET重定向实际上已被严格策略破坏。

实施例:

不会从其他域重定向时设置Cookie:

Rails.application.config.session_store :cookie_store, key: 'your-session', same_site: :strict 

将在GET重定向上设置Cookie:

Rails.application.config.session_store :cookie_store, key: 'your-session', same_site: :lax
© www.soinside.com 2019 - 2024. All rights reserved.