用户登录或多次重定向后是不是可以保留 cookie?
Posted
技术标签:
【中文标题】用户登录或多次重定向后是不是可以保留 cookie?【英文标题】:Is it possible to persist a cookie after User login or multiple redirects?用户登录或多次重定向后是否可以保留 cookie? 【发布时间】:2022-01-17 22:39:04 【问题描述】:我正在处理一个流程,如果 User
未登录,我会将 config
哈希存储在 cookie 中,以便在 User
登录后检索,以便流程可以继续。
启动控制器:
def index
if current_user.nil?
cookies.signed[:config] = config
redirect_to new_session_path
end
end
会话控制器:
def new
cookies.signed[:config].present? # true
end
def create
# authentication logic
redirect_to admin_users_path
end
用户控制器:
def index
cookies.signed[:config].present? # false
end
我可以在第一次重定向后从SessionsController
new
操作中检索所述cookie,但在User
登录并再次重定向到最终目的地(create
操作)之后,cookie 似乎是删除,因为cookies.signed[:config]
返回nil
我没有明确删除 cookie,我尝试使用 session[:config] = config
而不是 cookies.signed
,但结果相同。
是否可以通过多次重定向或User
登录来保留 cookie?
或者我是否必须在每个控制器操作中设置 cookie,以便将其传递到我实际使用它的地方?
编辑:问题是我们的通用登录控制器位于子域app.ourapp.com
下,而登录的User
被重定向到business.ourapp.com
。
在创建 cookie 期间未指定域时,默认使用 request.domain
,因此从未为 business.ourapp.com
创建 cookie。
解决方法是在创建 cookie 时传递 domain
参数,以便为 app.ourapp.com
和 business.ourapp.com
(cookies.signed(:cookie_name, domain: "ourapp.com"
) 创建它
【问题讨论】:
我找到了答案,而不是添加 EDIT。要么回答你自己的问题,考虑到你的问题是合理的,这将是一个可接受的行动,或者删除这个问题。很少有人会遇到一个问题并期望它包含答案(他们会在答案部分查看),因此这篇文章不适合 SO 的性格。 【参考方案1】:问题是我们的通用登录控制器位于子域app.ourapp.com
下,而登录的User
被重定向到business.ourapp.com
。
在创建 cookie 期间未指定域时,默认使用 request.domain
,因此从未为 business.ourapp.com
创建 cookie。
解决方法是在 cookie 创建中传递域参数,以便为 app.ourapp.com
和 business.ourapp.com
(cookies.signed(:cookie_name, domain: "ourapp.com"
) 创建它
【讨论】:
以上是关于用户登录或多次重定向后是不是可以保留 cookie?的主要内容,如果未能解决你的问题,请参考以下文章
python requests 爬虫模拟登录后访问一些界面还是会重定向到登录界面?