我已经成功地使用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端点,但是这些字段未更新,并且我获取的用户记录没有更新。
我无法找出原因,需要帮助以找出问题所在。
答案 0 :(得分:0)
首先,如果只希望通过身份验证的用户使用此端点,请使用“ auth:api”中间件:
Route::group(['middleware' => 'auth:api'], function () {
// Your endpoints here
});
第二,在处理Api和Passport时,您可以从$ request变量获取当前用户:
$request->user();