Отправка моего проекта laravel в производство. Кажется, я больше не могу войти в систему пользователя (он работал локально)
Я использую socialite и graph (microsoft) для входа в систему своих пользователей.Единственное, что я изменил, это то, что я добавил сертификат ssl для обработки https (поскольку Microsoft Graph может перенаправлять только по https, если не localhost)
Проблема заключается в том, что после перенаправления в Graph я вхожу, а затем перенаправляювернуться на Graph (он зацикливается на API) Сразу после строки Auth :: login (см. код ниже) я сделал dd (Auth :: check ()), и я получаю true, так что похоже, аутентификация выполнена, нооно не является постоянным, поэтому, когда я перенаправляю его на панель инструментов, он возвращается на страницу входа в граф.
Сначала я подумал, что это может быть проблема с https (перенаправление графа по https, Laravel входит в систему через сеанс https, а не по протоколу http), поэтому я установил безопасное значение false в файле session.php, но у меня все еще остается та же проблема.
Вот мой код: метод, достигнутый авторизацией перенаправления:
public function graph_authorize()
{
$user = Socialite::driver('graph')->stateless()->user();
$token = $user->token;
$refresh = $user->refreshToken;
$expires = $user->expiresIn;
$token_cache = new TokenCache();
if (strpos($user->email,'symposium-cs.fr')){
$db_user = User::where('provider_id','=',$user->id);
if (!($db_user->exists())){
$new_user = User::create([
'provider_id'=>$user->getId(),
'name' => $user->name,
'email'=>$user->email,
'avatar'=>$user->avatar,
]);
$new_user->save();
$new_user->assignRole('gpa');
Auth::login($new_user,true);
$token_cache->storeTokens($token,$refresh,$expires);
return redirect()->route('admin.index');
} else {
$db_user->first()->avatar = $user->avatar;
$db_user = $db_user->first();
$db_user->access_token = $token;
$db_user->refresh_token = $refresh;
$db_user->token_expires = $expires;
$db_user->save();
Auth::login($db_user,true);
$token_cache->storeTokens($token,$refresh,$expires);
return redirect()->route('admin.index');
}
} else {
return redirect()->route('failed_domain');
}
}
Когда я получаю данные: я проверяю, существует ли пользователь, чтобы узнать погоду, я должен создать его или просто войтиЭто.Затем я вручную авторизируюсь с помощью Auth :: login.Я проверяю переменную $ db_user с помощью dd, и это правильно.
Маршрут admin.index находится за промежуточным программным обеспечением auth.
Вот метод showLoginForm от LoginController
public function showLoginForm()
{
if(Auth::guest()){
return Socialite::driver('graph')->scopes(['openid','profile','offline_access','User.Read','Mail.Read'])->redirect();
} else {
return redirect()->route('admin.index');
}
}
Спасибо за помощь мне ... Iпонятия не имею в чем проблема