我不相信这个领域还有任何东西,但如果我错了,请纠正我。我想为10月CMS创建一个带有端点的API,以便对网站状态(已在10月仪表板上),当前经过身份验证的用户,日志源以及其他一些可能性等内容进行响应。我们的想法是拥有一个外部仪表板来将这些数据导入。
问题是它应该受到保护。我找到this来为vanilla Laravel添加API密钥。有没有人试过在10月创建受保护的API端点?
如果有人构建了一些东西,我实际上试图找到一个起点,我希望将其变成一个开源项目,以帮助扩展10月份的某种插件。
答案 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]);
}