2015-08-27 64 views
6

我似乎記得在Laravel 4中有一個ajax過濾器,這隻會允許通過ajax的請求。Ajax中間件

是否有任何類似的中間件Laravel 5.

我有一個通過ajax從我的數據庫獲取數據的途徑,我想保護這條路所以沒有用戶可以去一下,看看數據的JSON字符串。

+0

你的意思是'Request :: ajax()'?在Laravel 5中,您可以使用相同的 – Patrick2607

+0

是的,我只希望這些請求只能是ajax。 – panthro

+0

你可以做ajax請求,然後在你的控制器函數中就像這樣:'if(Request :: ajax()){// echo json} else {// redirect};' – Patrick2607

回答

26

您可以使用中間件來做到這一點。

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中間件。