2016-09-09 1 views
1

J'ai construit api de repos avec laravel 5.2, en l'intégrant avec angularJS et en le fixant avec jwt. C'est ma première expérience avec jwt, pas avec angularjs, et dans mes projets passés (avec spring mvc/security, angularJS et session à la place jwt), je pouvais protéger les ressources en interceptant l'URL avec la sécurité du printemps, comme ceci:Sécuriser les ressources javascript avec laravel

<sec:intercept-url pattern="*/app/**" access="isAuthenticated()" /> 

est-ce une façon de le faire avec Laravel ?, je l'ai déjà fait la validation javascript, donc si le jeton JWT est pas valide, les utilisateurs ne peuvent pas accéder à une route, mais la connexion, le problème est que le javascript source est disponible ou l'utilisateur est connecté ou non.

Répondre

3

Vous pouvez le faire dans une fermeture de route:

Route::get('script/{filename}', function($filename){ 
    return response(file_get_contents(public_path('/assets/js/' . $filename)))->header('Content-Type', 'text/javascript') 
})->middleware(['auth']); 

Bien que cela signifie que chaque demande de ce fichier nécessite bootstrapping toute l'application qui est une perte de performance importante. Cependant, lorsqu'on l'invoque une seule fois, ce n'est pas une grosse affaire.

sidenote Les fermetures d'itinéraire ont des effets secondaires; l'un des plus gros étant que le fichier ne peut pas être mis en cache lorsque les fermetures sont utilisées.

+0

La réponse était très claire, était exactement ce que je cherchais. Cela m'alarme un peu que les ressources ne puissent pas être mises en cache avec cette approche, donc j'évaluerai si je devrais obscurcir et protéger les fichiers ou juste l'obfucaste. Merci beaucoup. –

+0

@PadronLeandro Désolé, je devrais être plus clair sur la mise en cache. C'est le fichier route qui ne peut pas être mis en cache. Le fichier javascript réel peut certainement être mis en cache. Pour résoudre le premier, déplacez la fonctionnalité dans un contrôleur et vous pouvez également mettre en cache le fichier de route. – Ohgodwhy