【发布时间】:2020-11-14 16:24:19
【问题描述】:
我正在为 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');
});
});
我忘记了哪一步?
【问题讨论】:
-
您是否错过在
AuthServiceProvider的引导方法中定义Passport::routes方法? -
@sta 不,我没有错过。
标签: php laravel laravel-passport