在我的项目中,我将 Laravel 纯粹用作后端 api,所有前端都由 Angular javascript 处理。目前,可以直接访问 Laravel 路由,它将在浏览器中显示 Json 中的所有数据。我想对其进行限制,因此 Laravel 只响应 Ajax 请求而没有其他响应。
我在这里阅读了这篇文章,它为 Laravel 4 提供了一个解决方案,即在filter.php
. 但从 Laravel 5.1 开始,不再使用过滤器,我相信中间件也可以用来做同样的事情。但是,我不确定如何继续将 Laravel 4 解决方案中的 SO 答案从过滤器更改为中间件。
有人可以分享您关于如何防止 Laravel 5.1 路由被直接访问的想法吗?
Laravel 4 解决方案使用filter.php
:在filter.php
声明此过滤器中:
Route::filter('isAJAX', function()
{
if (!Request::AJAX()) return Redirect::to('/')->with(array('route' => Request::path()));
});
然后将您只希望通过 AJAX 访问的所有路由放入一个组中。在您的 routes.php 中:
Route::group(array('before' => 'isAJAX'), function()
{
Route::get('contacts/{name}', ContactController@index); // Or however you declared your route
... // More routes
});