我已按照此tutorial的步骤操作,以便使用auth:api
中间件在Laravel 5.3中设置API身份验证。
除了我发现为了成功访问我的API之外,一切都按预期工作,我只需要在我的users
表中为任何用户提供API令牌而不是链接到当前登录用户的令牌。
这是预期的行为,因为这个中间件是无状态的吗?我正在使用AdLdap2对用户进行身份验证,但我无法看到我的错误,特别是当我按照上面教程中的步骤操作时。
我还看了一下处理API令牌验证的TokenGuard,但看不到任何确保令牌与登录用户匹配的逻辑。
非常感谢任何帮助。
答案 0 :(得分:0)
我认为身份验证的工作方式与预期相符。 auth:api唯一做的就是确保您通过身份验证才能访问受保护的路由。如果您只想保护一个特定路线,您可以使用Gates
因此,如果您有一条访问下方用户的路线,并且您希望登录的用户只能访问自己,则可以添加一个门。
路由/ web.php
Route::get('/user/{id}', function ($id) {
$userYourTryingToView = User::find($id);
if (Gate::allows('get-user', $userYourTryingToView)) {
// The user is allowed to access herself, return the user.
return response()->json($userYourTryingToView);
}
// User is not authenticated to view some other user.
return response('Unauthenticated', 403);
});
并在您的app / Providers / AuthServiceProvider.php
中/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Gate::define('get-user', function ($authenticatedUser, $userYourTryingToView) {
return $authenticatedUser->id == $userYourTryingToView->user_id;
});
}