Nel mio progetto, sto usando Laravel esclusivamente come backend API e tutto il frontend è gestito da Angular javascript. Al momento, è possibile accedere direttamente alle rotte di Laravel e toglierà tutti i dati in Json visualizzati nel browser. Voglio mettere una restrizione in modo che Laravel risponda solo alle richieste Ajax e nient'altro.Come impedire l'accesso diretto a Laravel Routes (ad esempio richieste non Ajax)
Ho letto questo post here che ha una soluzione per Laravel 4 che è aggiungendo una limitazione in filter.php
. Ma a partire da Laravel 5.1, i filtri non sono più utilizzati e credo che il middleware possa essere usato per fare lo stesso. Tuttavia, non sono sicuro di come procedere cambiando la soluzione di Laravel 4 in quella risposta SO dal filtro al middleware.
Qualcuno può condividere le tue idee su come impedire l'accesso diretto a Laravel 5.1 per favore?
laravel 4 soluzione con filter.php
: In filter.php
dichiarare questo filtro:
Route::filter('isAJAX', function()
{
if (!Request::AJAX()) return Redirect::to('/')->with(array('route' => Request::path()));
});
Poi mettere tutte le rotte che si desidera accessibile solo tramite la tecnologia AJAX in un gruppo. Nel vostro routes.php:
Route::group(array('before' => 'isAJAX'), function()
{
Route::get('contacts/{name}', [email protected]); // Or however you declared your route
... // More routes
});
È fantastico! Esattamente quello di cui ho bisogno. Grazie mille @JaviStolz Questo è un grandissimo aiuto dato che sono rimasto bloccato per molto tempo. V felice :) Darò una prova ora. – Neel
Questo può essere facilmente aggirato aggiungendo manualmente un'intestazione HTTP 'X-Requested-With: XMLHttpRequest' alle richieste HTTP. – Epoc
Un'altra cosa sarebbe utilizzare i filtri cors per consentire solo le richieste provenienti da un determinato dominio insieme al middleware isAjax. –