我似乎记得在Laravel 4中有一个ajax过滤器,这只允许通过ajax进行请求。
Laravel 5是否有类似的中间件。
我有一条通过ajax从我的数据库获取数据的路由,我想保护这条路线,所以没有用户可以访问它并查看json数据字符串。
答案 0 :(得分:33)
您可以使用中间件来执行此操作。
php artisan make:middleware AllowOnlyAjaxRequests
应用程序/ HTTP /中间件/ AllowOnlyAjaxRequests.php
<?php
namespace App\Http\Middleware;
use Closure;
class AllowOnlyAjaxRequests
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(!$request->ajax()) {
// Handle the non-ajax request
return response('', 405);
}
return $next($request);
}
}
将'ajax' => \App\Http\Middleware\AllowOnlyAjaxRequests::class,
添加到routeMiddleware
中的app/Http/Kernel.php
数组。
然后您可以在路线上使用ajax
中间件。