Laravel 5.3和使用api_token的API身份验证

时间:2016-12-15 18:06:18

标签: php laravel api authentication laravel-5.3

我已按照此tutorial的步骤操作,以便使用auth:api中间件在Laravel 5.3中设置API身份验证。

除了我发现为了成功访问我的API之外,一切都按预期工作,我只需要在我的users表中为任何用户提供API令牌而不是链接到当前登录用户的令牌。

这是预期的行为,因为这个中间件是无状态的吗?我正在使用AdLdap2对用户进行身份验证,但我无法看到我的错误,特别是当我按照上面教程中的步骤操作时。

我还看了一下处理API令牌验证的TokenGuard,但看不到任何确保令牌与登录用户匹配的逻辑。

非常感谢任何帮助。

1 个答案:

答案 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;
    });
}