使用 laravel 保护 javascript 资源

Secure javascript resources with laravel

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

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

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

有什么方法可以用 laravel 做到这一点吗?我已经进行了 javascript 验证,所以如果 jwt 令牌无效,用户将无法访问任何路由,但是登录,问题是 javascript 源可用,无论用户是否登录。

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

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

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

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