将laravel项目发送到生产环境似乎我无法再登录用户(它在本地运行)
我正在使用社交名目和图表(microsoft)记录我的用户。 唯一更改的是我添加了一个ssl证书来处理https(因为Microsoft Graph如果不是localhost,则只能在https上重定向)
问题是在Graph上重定向后,我登录,然后重定向返回到Graph(它在api上循环) 就在Auth :: login行之后(请参见下面的代码),我做了dd(Auth :: check())并得到了真,所以看起来好像身份验证已经完成,但不是持久性的,所以当我在仪表板上重定向时它会返回到图形登录页面。
我首先认为这可能是https的问题(https上的图形重定向,Laravel使用https会话而不是http登录),所以我在session.php中将安全性设置为false,但是仍然存在相同的问题。
这是我的代码: 授权重定向所达到的方法:
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手动登录。 我用dd检查$ db_user var,这是正确的。
“ admin.index”路由位于auth中间件后面。
这是LoginController中的showLoginForm方法
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');
}
}
谢谢您的帮助...我不知道出什么问题了