从 Laravel 中的目录为授权用户提供静态 JS-App

Serve static JS-App from directory in Laravel for authorized users

我有一个 Js 应用程序。它有自己的目录,它需要的一切都在该目录中。我现在想在 Laravel 项目中使用这个应用程序。但它应该只对登录用户可用。现在我不知道该怎么做。我会使用 cookie 身份验证,但它应该如何工作?如果 JS 应用程序在 public 目录中,它始终可以访问,并且无法访问 csrf 令牌。如果它在资源中,我只能提供单个文件。如何使整个目录可用?目前我只看到一种可能性:

web.php

Route::middleware(['auth:sanctum', 'verified'])->get('/jsapp', function () {
    return view("jsapp");
})->name('jsapp');

Route::middleware(['auth:sanctum', 'verified'])->get('/jsapp/{path?}', function (Request $req, $path) {
    return serve_file_somehow("path_to_project_root", $path);
});

此 Js-App 定期轮询服务器以检查用户是否仍处于登录状态 in.My 问题如何实现此 serve_file_somehow 功能?或者对于这种情况,也许还有其他解决方案?是否有任何类型的 .htaccess -magic 可以实现?

Js-App目录结构:

resources/views/jsapp
-- index.html
    <html>
        <link href="css/styles.css" />
        <script src="js/index.js />
    </html>
-- css/styles.css
-- js/index.js
-- images/img1.jpg

困扰我的是你通过PHP/Laravel重新实现了一个网络服务器的功能。

您应该通过 blade 模板提供 index.html 文件内容 index.blade.php

<html>
  <meta name="csrf-token" content="{{ csrf_token() }}">
  <link href="/css/styles.css" />
  <script src="/js/index.js />
</html>

具有受保护的路线:

Route::middleware(['auth:sanctum', 'verified'])->get('/jsapp', function () {
    return view("jsapp.index");
})->name('jsapp');

并将所有 javascript 和 css 文件放入 public 目录。

也可以通过 XSRF-TOKEN cookie 获取 CSRF 令牌,Laravel cookie 会自动设置。如果您无权访问资源目录,或者希望将所有 JS 应用程序放在一个目录中。那你也可以用这个方法。

 <script>
    $.ajaxSetup({
        headers: {
            'X-XSRF-TOKEN': $.cookie('XSRF-TOKEN')
        }
    });
 </script>