2016-09-09 9 views
1

Я построил rest api с laravel 5.2, интегрируя его с угловымJS и закрепляя его с помощью jwt.Защищенные ресурсы javascript с laravel

Это мой первый опыт работы с jwt, а не с angularjs, и в моих прошлых проектах (с весной mvc/security, angularJS и session вместо jwt), я мог бы защитить ресурсы, перехватив URL с весной, например:

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

есть ли способ сделать это с Laravel ?, я уже сделал яваскрипт проверки, так что если JWT маркер не является действительным, пользователи не могут получить доступ к любому маршруту, но входу, проблема в том, что JavaScript источник доступен либо для входа в систему, либо для пользователя.

ответ

3

Вы можете сделать это в затворе по маршруту:

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

Хотя это означает, что каждый запрос к этому файлу требуется развернув все приложение, которое является существенной потерей производительности. Однако при вызове только один раз, это не огромная сделка.

sidenote Пути закрытия имеют побочные эффекты; одним из самых больших из них является то, что файл не может быть кэширован при использовании Closures.

+0

Ответ был очень ясным, именно так я и искал. Это немного тревожит меня, что ресурсы не могут быть кэшированы с таким подходом, поэтому я буду оценивать, должен ли я запутывать и защищать файлы или просто обмануть его. спасибо. –

+0

@PadronLeandro Извините, я должен быть более ясным о кешировании. Это «файл маршрута», который нельзя кэшировать. Фактический файл javascript, безусловно, может быть кэширован. Чтобы обратиться к первому, переместите функциональность в контроллер, и вы также можете кэшировать файл маршрута. – Ohgodwhy