如何使用 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');
});
});
我忘记执行哪一步了?
万一有人在寻找与我的问题相关的答案。
- 如果您使用 laravel 8.x。不要尝试安装 sfelix-martins/passport-multiauth 包。该包已弃用,因为 Laravel Passport 自版本 9.0 以来具有本机实现。
- 尝试阅读这些文章。他们每个人都使用护照范围执行多重保护,希望你能像我一样找到你需要的解决方案。
文章:
我正在为 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');
});
});
我忘记执行哪一步了?
万一有人在寻找与我的问题相关的答案。
- 如果您使用 laravel 8.x。不要尝试安装 sfelix-martins/passport-multiauth 包。该包已弃用,因为 Laravel Passport 自版本 9.0 以来具有本机实现。
- 尝试阅读这些文章。他们每个人都使用护照范围执行多重保护,希望你能像我一样找到你需要的解决方案。
文章: