Ajax中间件

pan*_*hro 7 laravel laravel-5

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

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

我有一个通过ajax从我的数据库获取数据的路由,我想保护这条路线,所以没有用户可以去看它并看到一个json数据串.

Can*_*ral 35

您可以使用中间件来执行此操作.

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

添加'ajax' => \App\Http\Middleware\AllowOnlyAjaxRequests::class,到您的routeMiddleware阵列中app/Http/Kernel.php.

然后,您可以ajax在路线上使用中间件.