基本上,我在laravel中有一个RESTful API,并且我不想让任何人访问该API,所以我创建了一个APIKey中间件。通常,我只是检查请求URL中的API密钥是否等于分配给用户的密钥。但是,由于我计划在API上构建并允许其他人构建php,js等应用程序,因此我认为检查API密钥是否等于用户请求API密钥时注册的网站或应用程序是一个好主意。我应该如何解决这个问题?
中间件示例:
class APIKey
{
public function handle($request, Closure $next)
{
if ($request->apikey == '') {
return redirect('/');
} else {
$users = User::where('access_key', $request->apikey)->where('registered_app', $request->origin);
if ($users != 1) {
return response("Invalid access key");
} else {
return $next($request);
}
}
}
}
请避免语法错误。
答案 0 :(得分:0)
首先,您应该正确编写查询
$user = User::where('access_key', $request->apikey)->where('registered_app', $request->origin)->first();
这应该返回一个有效的用户,否则:
if ($users != null) {
return response("Invalid access key");
} else {
return $next($request);
}
这应该有效。