【发布时间】:2015-12-11 15:06:18
【问题描述】:
在我的项目中,我将 Laravel 纯粹用作后端 api,所有前端都由 Angular javascript 处理。目前,可以直接访问 Laravel 路由,它会将 Json 中显示在浏览器中的所有数据都咳出。我想对其进行限制,以便 Laravel 只响应 Ajax 请求,而不响应其他请求。
我阅读了这篇文章 here,它为 Laravel 4 提供了一个解决方案,即在 filter.php 中添加限制。但从 Laravel 5.1 开始,不再使用过滤器,我相信中间件也可以用来做同样的事情。但是,我不确定如何继续将该 SO 答案中的 Laravel 4 解决方案从过滤器更改为中间件。
有人可以分享您关于如何防止 Laravel 5.1 路由被直接访问的想法吗?
使用filter.php 的 Laravel 4 解决方案:
在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
});
【问题讨论】:
标签: laravel laravel-routing laravel-5.1 laravel-middleware laravel-filters