400 0867 457

NEWS/新闻

分享你我感悟

您当前位置> 主页 > 新闻 > 技术开发

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 使用同样适用
基本上就这些,不复杂但容易忽略中间件控制。

相关案例查看更多