Laravel是我可以使用的简单的无状态auth过滤器

时间:2015-03-27 11:28:06

标签: php mysql api authentication laravel

我在Laravel中创建了一个简单的无状态身份验证过滤器,以便使用我的restAPI授权用户。

它的工作原理是发送http标头(简单演示),例如:

curl -u“5454:5454_23423dsfsdfDDdsf”

第一个参数是用户ID,第二个参数是api_key。

然后,服务器按发送的id检查用户,然后检查发送的api_key是否与数据库中的on匹配。

我也可以做一个“WHERE api_key = key”但是在archer字段的mysql DB中执行where语句似乎很慢。因此,我通过ID进行查找,然后检查api密钥是否匹配。

这个过滤器好吗?

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 个答案:

没有答案