Laravel怎么在Controller中获取当前登录的用户信息
发表时间:2025-11-24 00:00:00
文章作者:穿越時空
浏览次数:
在 Laravel 中获取当前登录用户可通过 auth() 辅助函数、Auth 门面或依赖注入实现,推荐结合中间件使用 auth()->check() 判断登录状态并确保路由安全。
在 Laravel 的 Controller 中获取当前登录的用户信息非常简单,Laravel 提供了 Auth 门面和辅助函数 auth() 来快速访问认证用户。
1. 使用 auth() 辅助函数
最常用的方式是使用全局的 auth() 函数:
-
$user = auth()->user();—— 获取完整用户模型实例 -
$id = auth()->id();—— 直接获取当前用户的 ID -
auth()->check()—— 判断是否有用户登录
示例代码:
public function profile()
{
if (auth()->check()) {
$user = auth()->user();
return response()->json([
'name' => $user->name,
'email' => $user->email
]);
}
return response()->json(['message' => '未登录'], 401);
}
2. 使用 Auth 门面
你也可以使用 Auth 门面,效果相同:
- 先在控制器顶部引入:
use Illuminate\Support\Facades\Auth; - 然后使用:
Auth::user()、Auth::id()、Auth::check()
示例:
use Illuminate\Support\Facades\Auth;
public function dashboard()
{
$user = Auth::user();
return view('dashboard', compact('user'));
}
3. 通过依赖注入获取用户(推荐)
Laravel 支持在方法中直接注入 \Illuminate\Http\Request 或使用 User 类型提示:
use Illuminate\Http\Request;
public function index(Request $request)
{
$user = $request->user(); // 获取当前登录用户
// 或者:
// $user = $request->user();
}
更优雅的方式是使用路由模型绑定结合中间件:
use App\Models\User;
public function show(User $user)
{
// 确保只能查看自己的信息
if ($user->id !== auth()->id()) {
abort(403);
}
return view('profile', compact('user'));
}
注意事项
- 确保路由被 auth 中间件保护,否则可能返回 null
- 建议在使用
auth()->user()前先用auth()->check()判断是否登录 - 如果是 API 路由,配合 Sanctum 或 Passport 使用同样适用

->check() 判断登录状态并确保路由安全。







