Laravel过滤器更快

时间:2015-03-26 20:52:12

标签: php mysql authentication laravel basic-authentication

我将此API用作初学者包:

https://github.com/akuzemchak/laracon-todo-api

基本身份验证的过滤器如下所示:

Route::filter('api.auth', function()
{
    if (!Request::getUser())
    {
        App::abort(401, 'A valid API key is required');
    }
    $user = User::where('api_key', '=', Request::getUser())->first();
    if (!$user)
    {
        App::abort(401);
    }
    Auth::login($user);
});

哪个会对用户进行身份验证,例如:curl -u“youruserapikeygoeshere:whatever”http://localapidomain.dev/v1/lists

但是,对于DB上的varchar字段检查api密钥会不会很慢?

我修改了我的过滤器,以便将用户ID作为用户名发送,然后将密码作为api密钥发送。

然后我的查询将从主键中选择用户,然后检查API密钥是否匹配。

因为我理解正确,对主键进行查询查询会更快,而不是“WHERE api_key = key”

Route::filter('api.auth', function()
{
    if (!Request::getUser())
    {
        App::abort(401, 'A valid user ID and API key is required');
    }

    $user = User::where('user_id', '=', Request::getUser())->first(['api_key']);

    if (!$user)
    {
        App::abort(401);
    }

    if ($user->api_key == Request::getPassword())
    {
        Auth::login($user);
    }
    else
    {
        App::abort(401);
    }
});

我的第二个过滤器更好/更快吗?

0 个答案:

没有答案