具有Passport API身份验证的API更新端点

时间:2019-07-03 20:28:22

标签: php laravel api laravel-passport laravel-5.8

我已经成功地使用Laravel Passport实现了API身份验证,并希望经过身份验证的用户更新其个人信息。因此,我创建了一个API端点Route::put('user', 'UserController@updatePersonalInfo')

控制器的updatePersonalInfo()方法看起来像这样

/**
* only authenticated user can update personal info
*
* api authentication by Passport
*/
public function updatePersonalInfo(Request $request)
{
    // check for the authenticated user
    $user = auth()->user();

    if ($user) {
        // get user sex & dob input, then update the sex & dob 
        $user->update($request->only(['sex', 'dob']));

        // return the updated user
        return new UserResource($user);
    }
}

通过传递不记名令牌和表单值来测试Postman中的API端点,但是这些字段未更新,并且我获取的用户记录没有更新。

我无法找出原因,需要帮助以找出问题所在。

1 个答案:

答案 0 :(得分:0)

首先,如果只希望通过身份验证的用户使用此端点,请使用“ auth:api”中间件:

Route::group(['middleware' => 'auth:api'], function () {
    // Your endpoints here
});

第二,在处理Api和Passport时,您可以从$ request变量获取当前用户:

$request->user();