10月CMS网站状态,经过身份验证的用户等受保护的API

时间:2016-12-30 18:50:56

标签: php laravel octobercms

我不相信这个领域还有任何东西,但如果我错了,请纠正我。我想为10月CMS创建一个带有端点的API,以便对网站状态(已在10月仪表板上),当前经过身份验证的用户,日志源以及其他一些可能性等内容进行响应。我们的想法是拥有一个外部仪表板来将这些数据导入。

问题是它应该受到保护。我找到this来为vanilla Laravel添加API密钥。有没有人试过在10月创建受保护的API端点?

如果有人构建了一些东西,我实际上试图找到一个起点,我希望将其变成一个开源项目,以帮助扩展10月份的某种插件。

1 个答案:

答案 0 :(得分:1)

您可以使用中间件自行进行身份验证。实际上这很简单。

您需要将中间件类应用于相关路线:

Route::group(['prefix' => 'api/v1', 'middleware' => 'Author\Plugin\classes\ApiMiddleware'], function () {
    Route::get('info', ['uses' => 'Author\Plugin\Controllers\Api\v1\Info@index']);
});

在ApiMiddleware handle()函数中,您可以根据需要定义身份验证规则(IP限制,基本身份验证等)

public function handle($request, Closure $next)
{
    // check if the IP is in the whitelist
    if (!in_array($request->ip(), $this->whitelist)) {
        return response("IP address rejected\n" . $request->ip(), 403);
    }

    // check for errors thrown in the other controllers
    $response = $next($request);
    $errors = $request->getSession()->get('errors');

    // no errors - return the response
    if (empty($errors))
        return $response;

    // return the error
    $message = $errors->getBag('default')->first();
    return response()->json(['code' => '400', 'message' => $message]);
}