laravel中获取当前登录用户信息有五种方法:一、auth::user();二、request()->user();三、auth()->user()辅助函数;四、auth::guard('name')->user()指定守卫;五、中间件中绑定用户到请求属性。

在 Laravel 应用中,若已启用认证系统但无法正确获取当前登录用户的信息,则可能是由于未正确调用认证守卫或未在请求上下文中验证用户状态。以下是获取当前用户信息的多种方法:
一、使用 Auth::user() 方法
该方法直接从当前认证守卫中获取已认证用户的模型实例,适用于已确认用户已登录的场景;若用户未登录,则返回 null。
1、在控制器方法中引入 Auth 门面:use Illuminate\Support\Facades\Auth;
2、调用 Auth::user() 获取用户对象:Auth::user()
3、访问用户属性,例如:$user = Auth::user(); echo $user->name;
二、使用 request()->user() 方法
该方法通过当前 HTTP 请求实例获取认证用户,本质是调用当前守卫的 user() 方法,与 Auth::user() 行为一致,但更符合依赖注入风格。
1、在控制器方法中接收 Request 对象参数:public function index(Request $request)
2、调用 request()->user() 获取用户实例:$user = $request->user();
3、检查是否为非空对象后再访问属性:if ($user) { echo $user->email; }
三、使用 auth()->user() 辅助函数
auth() 是 Laravel 提供的全局辅助函数,返回认证门面实例,其 user() 方法等效于 Auth::user(),适合在视图或服务类中快速调用。
1、在 Blade 模板中直接使用:{{ auth()->user()->name ?? 'Guest' }}
2、在服务类中调用:$user = auth()->user();
3、获取用户 ID 而不加载整个模型:auth()->id()
四、使用 Auth::guard() 指定守卫获取用户
当应用配置了多个认证守卫(如 api、web、admin)时,需显式指定守卫名称,否则默认使用 'web' 守卫。
1、获取 'api' 守卫下的当前用户:Auth::guard('api')->user()
2、获取 'admin' 守卫的用户 ID:Auth::guard('admin')->id()
3、检查特定守卫是否已认证:Auth::guard('api')->check()
五、在中间件中获取并传递用户信息
可在自定义中间件中提前获取用户并绑定到请求属性,便于后续控制器统一访问,避免重复调用认证方法。
1、在中间件 handle 方法中获取用户:$request->attributes->set('current_user', Auth::user());
2、在控制器中通过 $request->attribute('current_user') 访问:$user = $request->attribute('current_user');
3、确保中间件已注册到路由或控制器构造函数中:middleware('auth');











