信息发布→ 登录 注册 退出

Laravel怎么在Controller中获取当前登录的用户信息

发布时间:2025-11-24

点击量:
在 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 使用同样适用
基本上就这些,不复杂但容易忽略中间件控制。
标签:# 自己的  # 最常用  # 绑定  # 先在  # 用户登录  # 先用  # 可通过  # 可以使用  # 你也  # 判断是否  # laravel  # http  # NULL  # 中间件  # 路由  # ai  # app  # cad  # json  # js  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!