14

私のプロジェクトでは、Laravel を純粋にバックエンド API として使用しており、すべてのフロントエンドは Angular JavaScript によって処理されます。現時点では、Laravel のルートに直接アクセスでき、ブラウザに表示される Json のすべてのデータを吐き出すことができます。Laravel が Ajax リクエストにのみ応答し、それ以外には応答しないように制限を加えたいと考えています。

私はこの投稿を読んで、Laravel 4 の解決策を示していますfilter.php。しかし、Laravel 5.1 の時点でフィルターは使用されなくなり、ミドルウェアを使用して同じことができると思います。ただし、そのSO回答でLaravel 4ソリューションをフィルターからミドルウェアに変更する方法がわかりません。

Laravel 5.1 のルートに直接アクセスできないようにする方法について、アイデアを共有できますか?

を使用したLaravel 4ソリューションfilter.phpfilter.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
});
4

1 に答える 1