2015-05-24 148 views
1

如何防止用户直接访问路由并检索数据。Laravel阻止直接访问ajax路由

这是一个ajax请求。

我创建了一个路线

Route::get('/getmodels/{make_id}', ['as' => 'ajax.get.models', 'uses' => '[email protected]']); 

在我的内核我已经指出中间件到routeMiddleware阵列中的命名路线“ajax.get.models” 。

'ajax.get.models' => 'App\Http\Middleware\RedirectIfNotAjax’, 

在RedirectIfNotAjax我有这个。林不知道我是否正确接近这一点。

public function handle($request, Closure $next) 
{ 
    if (!$request->ajax()) { 
     return redirect()->to('/'); 
    } 

    return $next($request); 

} 

林不知道我如何防止用户通过浏览器直接访问网址像app.com/getmodels/400

+0

它看起来不错对我来说。而不是重定向,你可能只想做中止(401)或其他事情。 – Yada

+0

我知道我做了什么,没有工作。我没有把注册中间件设置成rotue。它现在有效。 – ArkhamsFinest

回答

0

我更改内核以下

'ajax' => 'App\Http\Middleware\RedirectIfNotAjax', 

而我设置的路线中间件

Route::get('/getmodels/{make_id}', ['middleware' => 'ajax', 'as' => 'ajax.get.models', 'uses' => '[email protected]']);