如何使用 laravel 8 护照创建和保护多重授权 api gurds?

How to create and secure multi-auth api gurds using laravel 8 passport?

我正在为 android 应用构建一个 API,它需要使用 Laravel 8 进行两种身份验证。用户授权和教师授权。

我遇到的问题是,为用户创建的令牌可以在教师 api 请求中使用,但不能在教师路线中使用。如果有人复制了用户的令牌可以更改用户的数据。

我对 auth.php 做了一些修改: 我把这个添加到守卫中:

 'teacher_api' => [
            'driver' => 'passport',
            'provider' => 'teacher',

        ],
'guards' => [
        'teacher' => [
            'driver'   => 'session',
            'provider' => 'teachers',
        ],

        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
            'hash' => false,
        ],
        'teacher_api' => [
            'driver' => 'passport',
            'provider' => 'teachers',

        ],
    ],

提供商数组:

 'providers' => [
        'teachers' => [
            'driver' => 'eloquent',
            'model'  => App\Teacher::class,
        ],

        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

    ],

Api 路线:

    Route::prefix('teacher')->group(function () {
        Route::group(['middleware' => 'auth:teacher_api'], function () {
            Route::get('teacher_info', 'Api\ApiController@teacherInfo');
            Route::post('update_teacher_info', 'Api\ApiController@updateTeacherInfo');
        });
    });

我忘记执行哪一步了?

万一有人在寻找与我的问题相关的答案。

  1. 如果您使用 laravel 8.x。不要尝试安装 sfelix-martins/passport-multiauth 包。该包已弃用,因为 Laravel Passport 自版本 9.0 以来具有本机实现。
  2. 尝试阅读这些文章。他们每个人都使用护照范围执行多重保护,希望你能像我一样找到你需要的解决方案。

文章:

Laravel 8 多重认证 API 教程

如何为 Laravel API 设置多重授权 |通过 Toby Okeke |中等的