Безопасные ресурсы JavaScript с помощью Laravel

Я собрал остальные API с помощью laravel 5.2, интегрировал его с angularJS и защитил с помощью jwt.

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

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

Можно ли это сделать с помощью laravel?, я уже выполнил проверку javascript, поэтому, если токен jwt недействителен, пользователи не могут получить доступ ни к какому маршруту, кроме входа в систему, проблема в том, что источник javascript доступен, либо пользователь вошли или нет.

1 ответ

Решение

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

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.

Другие вопросы по тегам