在我的项目中,我将Laravel纯粹用作后端api,所有前端都由Angular javascript处理.目前,可以直接访问Laravel路由,它将以Json格式输出浏览器中显示的所有数据.我想对它加以限制,这样Laravel只响应Ajax请求,而不响应其他请求.
我读了这篇here篇文章,其中有一个解决Laravel 4的方法,就是在filter.php
中增加一个限制.但是从Laravel 5.1开始,过滤器就不再使用了,我相信中间件也可以用来做同样的事情.然而,我不知道如何将Laravel 4解决方案从过滤器改为中间件.
Can someone share your ideas on how to prevent Laravel 5.1 routes from being accessed directly please?
Laravel 4溶液使用filter.php
:
Route::filter('isAJAX', function()
{
if (!Request::AJAX()) return Redirect::to('/')->with(array('route' => Request::path()));
});
然后把你只想通过AJAX访问的所有路由放到一个组中.在你的路由上.php:
Route::group(array('before' => 'isAJAX'), function()
{
Route::get('contacts/{name}', ContactController@index); // Or however you declared your route
... // More routes
});