stateless
方法可用于禁用会话状态 验证。将社交身份验证添加到 API:
return Socialite::driver('google')->stateless()->user();
“禁用会话状态验证”听起来让我感到恐惧。文档未详细说明安全性的权衡是什么。
在什么情况下会话状态验证很重要,为什么?
背景信息和上下文:
当我使用stateless()
时,我的社交名流(使用Facebook)完全正常。
但是,如果我删除stateless()
,则仅流程中的“正常情况”部分有效,而流程中重新请求“电子邮件”权限的部分(如果用户首先忽略了它们)则不起作用工作,结果是Laravel\Socialite\Two\InvalidStateException
。
此外,对于每个请求,我不会多次调用$provider->stateless()->user()
,因为我从these docs知道它从会话中删除了一个“状态”变量,因此在以后的调用中将失败。 >
(我使用getRedirectLoginHelper()->getReRequestUrl($redirectUrl, ['email'])
。请参见FacebookRedirectLoginHelper doc)