Документы Laravel Socialite говорят:
Метод stateless
может использоваться для отключения проверки состояния сеанса.Это полезно при добавлении социальной аутентификации в API:
return Socialite::driver('google')->stateless()->user();
«Отключить проверку состояния сеанса» звучит мне страшно. Документы нене вдаваться в подробности компромисса по безопасности.
В каких случаях важна проверка состояния сеанса и почему?
Справочная информация и контекст:
Мой поток Socialite (с использованием Facebook) работает совершенно нормально, когда я использую stateless()
.
Но если я удаляю stateless()
, будет работать только часть "нормального случая" моего потока и часть потока, которая повторно запрашивает "электронную почту"«разрешения (если пользователь сначала их опускает) не работают и вместо этого приводят к Laravel\Socialite\Two\InvalidStateException
.
Кроме того, я не звоню $provider->stateless()->user()
более одного раза за запрос, потому что я знаю из эти документы о том, что он удаляет переменную «состояния» из сеанса и, следовательно, не будет работать при последующих вызовах.
(я использую getRedirectLoginHelper()->getReRequestUrl($redirectUrl, ['email'])
. См. FacebookRedirectLoginHelper doc )