为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 7 使用 Passport 进行多重身份验证

Laravel 7 使用 Passport 进行多重身份验证

PHP
UYOU 2024-01-19 09:59:40
我正在开发需要为多个用户生成访问令牌的 Laravel 应用程序。我使用 Laravel Passport 和密码授予来颁发令牌。我已遵循 Laravel 文档,但似乎我做错了什么,因为当我尝试使用 Postman 调用我的 API 端点(学生)时,我被重定向到登录路由。后来我发现重定向来自我创建的中间件,但我仍然不知道出了什么问题验证文件        'guards' => [                'web' => [                    'driver' => 'session',                    'provider' => 'users',                ],                        'api' => [                    'driver' => 'passport',                    'provider' => 'users',                    'hash' => false,                ],                               'api-student' => [                    'driver' => 'passport',                    'provider' => 'students',                    'hash' => false,                ]    ];                 'providers' => [                'users' => [                    'driver' => 'eloquent',                    'model' => App\User::class,                ],                'students' => [                    'driver' => 'eloquent',                    'model' => App\Student::class,                ],                             ],api.php    Route::post('auth/getlogin', 'Api\StudentController@authenticate')->middleware('auth:api-student');        //Api\StudentController    public function authenticate(Request $request, Student $user)        {            $credentials = [                'username'=>$request->username,                'password'=>$request->password];                      if(!Auth::guard('api-student')->attempt($credentials)) {                return response()->json([                    'message'=>'Error'                ], 401);            }                         if(Auth::guard('api-student')->attempt($credentials)){                $user = Auth::guard('client');                $success['token'] =  $user->createToken('MyApp')->accessToken;                return response()->json(['success' => $success], $this->successStatus);            }            else{                return response()->json(['error'=>'Username or password incorrect'], 401);            }        }
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

删除middleware以便任何人都可以登录

Route::post('auth/getlogin', 'Api\StudentController@authenticate')->middleware('auth:api-student');

Route::post('auth/getlogin', 'Api\StudentController@authenticate');

您在这里申请middleware,所以在执行任何操作之前它会检查路线auth是否


查看完整回答
反对 回复 2024-01-19
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信