0

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

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。

4

1 回答 1

0
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-09-29T13:39:40.053 回答