Laravel, какой фильтр быстрее

Я использовал этот 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: что угодно» http://localapidomain.dev/v1/lists

Но не будет ли медленно проверять ключ api на поле varchar в БД?

Я изменил свой фильтр так, чтобы отправлять идентификатор пользователя в качестве имени пользователя, а пароль в качестве ключа 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);
}
});

Так мой второй фильтр лучше / быстрее?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …