Ajax中间件

时间:2015-08-27 10:02:06

标签: laravel laravel-5

我似乎记得在Laravel 4中有一个ajax过滤器,这只允许通过ajax进行请求。

Laravel 5是否有类似的中间件。

我有一条通过ajax从我的数据库获取数据的路由,我想保护这条路线,所以没有用户可以访问它并查看json数据字符串。

1 个答案:

答案 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中间件。