我尝试将项目从Laravel 5.2迁移到Laravel 5.3,将旧代码库的功能迁移到全新的Laravel 5.3安装中。我的项目使用Socialite启用Google OAuth身份验证,该身份验证无效。
我试图通过在网络路线文件web.php
中编写两条测试路线来隔离问题。
第一个测试路由手动尝试登录AdminUser
实例,并在会话中放置一个值。正在从数据库中正确获取实例。
Route::get('/test/signin', function(Request $request) {
$user = \App\AdminUser::find(1);
Auth::guard('web')->login($user);
// Set a test value in the session
session(['test_key' => 'test_value');
// Print all data in the session
print_r($request->session()->all());
// Returns true
return var_dump(Auth::check());
});
点击此路线会返回true
,表示身份验证有效。打印的会话数据包括已设置的['test_key' => 'test_value']
。
第二条路线检查身份验证并再次打印出会话中的所有数据。
Route::get('/test/checkauth', function(Illuminate\Http\Request $request) {
// Print all data in the session
print_r($request->session()->all());
// Try to get the current authenticated user instance (prints null)
echo var_dump(Auth::guard('web')->user());
// Try to get the authenticated user instance in a different way (also prints null)
echo var_dump($request->user());
// Returns false
return var_dump(Auth::guard('web')->check());
});
在访问/test/signin
路线后立即访问此路线时,不显示在第一条路线中设置的['test_key' => 'test_value']
对,它会打印{{1}尝试获取经过身份验证的用户实例时,在通过null
检查身份验证状态时返回false
。
会话驱动程序在Auth::check()
中设置为file
,我已检查.env
文件夹的目录权限。
知道这里出了什么问题吗?