【问题标题】:Use Auth facade in API routes (Laravel 8)在 API 路由中使用 Auth 外观(Laravel 8)
【发布时间】:2021-11-21 09:20:14
【问题描述】:

我希望在 Laravel 8api.php 路由文件中的 CompanyController 中使用 Auth::user()。喜欢

Route::get('team', [CompanyController::class, 'index']);

但如果我这样做,我将无法在CompanyController 文件中的以下代码中访问 Auth。

use Illuminate\Support\Facades\Auth;

public function index(Request $request)
    {

        /**
         * Role 1 => admin, 2 => hr, 3=> member
         */

        if (Auth::user()->role <= 2) {

            return ['company' => Auth::user()->company, 'team' => Auth::user()->company->users];
        }
    }

因此,我现在为实现所需要做的是将 api 前缀到位于 web.php 路由文件中的路由。

Route::prefix('api')->group(function () {
    Route::get('team', [CompanyController::class, 'index']);
}

谷歌搜索后,我或多或少意识到 Laravel Sanctum 可能会解决这个问题,这是因为 Api 路由中使用了 Token 驱动程序。但我想知道是否有任何简单的替代解决方案。使用 Sanctum 自定义登录页面似乎需要一些时间。

我想要的仍然是利用 Breeze 入门套件设置的初始登录页面。同时,用户登录后,可以访问Auth。

【问题讨论】:

    标签: laravel laravel-api laravel-vue


    【解决方案1】:
    if (Auth::user()->role <= 2) {
    

    这里假设用户已经过身份验证,您需要将此路由与身份验证中间件放在一起。例如:

    Route::get('team', [CompanyController::class, 'index'])->middleware('auth');
    

    如果你将使用 Laravel Sanctum,你需要保护路由(仅在真正需要时)

    Route::get('team', [CompanyController::class, 'index'])->middleware('auth:sanctum');
    
    

    文档:

    【讨论】:

      猜你喜欢
      • 2021-01-30
      • 2023-02-23
      • 1970-01-01
      • 2022-10-19
      • 2021-11-23
      • 2016-09-07
      • 2021-09-21
      • 2019-01-09
      • 2020-09-11
      相关资源
      最近更新 更多