Laravel中Auth::user()返回null问题排查咨询
问题描述
在web.php中创建了如下路由组:
Route::group(['middleware' => ['web' , 'auth']], function () { Route::namespace('App\Http\Controllers\Admin')->prefix('dashboard')->group(function () { Route::get('/index', 'DashboardController@index')->name('dashboard.index'); }); });
但在DashboardController > index()方法中,Auth::user()返回null:
class DashboardController extends Controller { public function index(){ dd(Auth::user()); return view('panel.admin.dashboard'); } }
而在LoginController > login()方法中,执行Auth::attempt($credentials)后,Auth::user()能正常获取到用户:
class LoginController extends Controller { public function login (AdminLoginRequest $request) { $credentials = $request->only('phone', 'password'); if (Auth::attempt($credentials)) { return redirect()->route('dashboard.index') ; } return redirect()->back()->withErrors(['msg' => 'invalid inputs']); } }
已排查常见错误(控制器获取用户方式错误、缺少web中间件),请问还有哪些遗漏的排查点?
可能的遗漏排查点
认证守卫不匹配:如果后台使用独立的用户模型(如
Admin),需确认是否配置了自定义认证守卫:- 检查
config/auth.php中是否存在对应守卫(如admin),且模型、provider配置正确 - 路由组的
auth中间件需指定守卫:['middleware' => ['web', 'auth:admin']] - 确认
LoginController中是否指定了对应守卫,比如添加protected $guard = 'admin';,或调用Auth::guard('admin')->attempt($credentials)
- 检查
Session配置异常:
- 检查
config/session.php的domain配置,需与当前访问域名匹配(子域名场景需注意) - 确认
secure配置:HTTPS站点需设为true,HTTP站点设为false,否则Session Cookie无法正常存储 - 检查
storage/framework/sessions目录的读写权限,权限不足会导致Session无法写入
- 检查
中间件执行顺序问题:虽然当前路由组中
web在auth之前,但需确认是否在RouteServiceProvider或其他配置中修改了中间件组的执行顺序,导致StartSession等Session相关中间件晚于auth执行基类控制器的干扰:查看
DashboardController继承的App\Http\Controllers\Controller基类,确认构造方法中是否添加了guest等会清除登录状态的中间件缓存导致的配置不生效:执行以下命令清除缓存,避免路由或配置缓存导致中间件逻辑异常:
php artisan route:clear php artisan config:clear php artisan cache:clear重定向过程中的Session丢失:检查是否有自定义中间件在重定向时干扰了Session传递,或服务器配置(如反向代理)导致Session Cookie无法正确携带到后续请求
内容的提问来源于stack exchange,提问作者aref razavi
相关产品推荐
相关产品推荐

