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

标签 javascript laravel laravel-jetstream

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

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 定期轮询服务器以检查用户是否仍然登录。我的问题是如何实现这个 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 重新实现了 Web 服务器的功能。

最佳答案

您应该通过 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>

使用 protected 路由:

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

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

关于javascript - 从 Laravel 中的目录为授权用户提供静态 JS-App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64401733/

相关文章:

javascript - Google 条形图数据准备——按列分组

javascript - 使用 React 在单击时更改正文元素的背景颜色?

javascript - 模态在大屏幕上不起作用

php - Laravel 一对多关系不起作用 - 返回递归

javascript - IE8 内联尝试的 SVG 后备

php - 从数据库检索、计算并发布到 View

mysql - 在 Laravel 4 迁移中创建 MYSQL 过程

php - Eloquent:乘和加列,然后按结果排序

Laravel 8 auth Attempting 和 Failed 事件未按预期触发