我在这篇文章中实现了代码:
Autocomplete with ajax call(Json) in laravel, no response
它在laravel中使用ajax调用(json)。一切都很好。但是,该路线使用' get'并且可以使用URL查看查询结果。我认为这是一个安全和隐私问题。
在自动填充功能未直接调用信息时,阻止查看信息的最佳方法是什么?
答案 0 :(得分:1)
您可以通过验证设置参数的最小长度。将其放入控制器并限制js代码minLength: 3
中的最小长度。
use Validator; // at the top of controller
public function search(Request $request) {
$v = Validator::make($request->all(), [
'q' => 'required|min:3',
]);
if ($v->fails()) {
return [];
}
// now you are sure that q has minimum 3 chars
// search and output
}
答案 1 :(得分:0)
无法识别是从自动完成js还是从get请求调用它。
但是,您可以使用throttle middleware来阻止抓取自动填充数据。像这样使用这个中间件:'middleware' => 'throttle:60,1'
。这限制了每分钟60个请求的请求,然后禁用1分钟的访问。请注意,api中间件组在Laravel 5.2中默认启用了throttle:60,1