使用 Laravel 保护 JavaScript 资源

Pad*_*dro 1 php jwt laravel angularjs satellizer

我已经用 laravel 5.2 构建了 rest api,将它与 angularJS 集成并用 jwt 保护它。

这是我第一次使用 jwt,而不是 angularjs,在我过去的项目中(使用 spring mvc/security、angularJS 和 session 代替 jwt),我可以通过使用 spring 安全拦截 url 来保护资源,如下所示:

<sec:intercept-url pattern="*/app/**" access="isAuthenticated()" />
Run Code Online (Sandbox Code Playgroud)

有没有办法用 laravel 做到这一点?,我已经做了 javascript 验证,所以如果 jwt 令牌无效,用户不能访问任何路由,只能登录,问题是 javascript 源是可用的,无论用户是登录与否。

Ohg*_*why 5

您可以在路由关闭中执行此操作:

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

尽管这意味着对这个文件的每个请求都需要引导整个应用程序,这是一个重大的性能损失。然而,当只调用一次时,这不是什么大问题。

旁注路线关闭有副作用;最大的问题之一是使用闭包时无法缓存文件。