问题标签 [laravel-airlock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
475 浏览

laravel - Laravel / Airlock AJAX 登录 - 419(未知状态)

我正在尝试进行跨域登录请求,并且除了登录之外的所有内容都在工作。因此,如果我去 api.example.com 并使用 laravel 应用程序登录,然后去 www.example.com 我可以通过调用 /api/user 端点(设置为气锁的一部分)来获取用户。我没有做的是使用用户名/密码通过 AJAX 登录。这是使用的JS:

首先我打电话setCSRFCookie()

然后我打电话loginUser()

我得到一个419 (unknown status)似乎是 Laravel 对无效 CSRF 令牌的响应。我查看了实际请求和两者APP_NAME_session,并且XSRF-TOKEN作为请求的一部分被传递。我唯一的想法/login是没有为此设置默认的身份验证路由,我需要在下面做一个,/api/login所以它由气锁中间件提供服务。感谢您提供的任何帮助。

Laravel 6.12.0 气闸 0.1.0

0 投票
1 回答
1910 浏览

laravel - Laravel Airlock - CSRF 令牌不匹配

我一直试图让 Laravel Airlock 与我正在开发的新 Web 应用程序一起工作,但无论我尝试什么,我都无法让它工作。

airlock.php 有以下设置:

cors.php 有:

我的 .env 有:

session.php 有:

在我的 Vue 应用程序中,我正在运行此 Axios 请求,但我不断收到 CSRF 令牌不匹配。

我以零运气遵循了所有在线指南。我在这里能错过什么?

airlock.php 中的有状态变量有 3 个 URL,因为我的应用程序将位于 2 个域和 localhost 上以进行开发和测试。我目前只在 localhost 上尝试过这个,我想知道这是否导致了这个问题。

如果我将 localhost 更改为http://localhost我不再得到 CSRF 令牌不匹配但是当我检查 Chrome 开发工具时,没有设置 cookie。

我还读到 SPA 必须与 API 位于同一个子域中才能使 Airlock 工作。这是真的?

0 投票
1 回答
1960 浏览

laravel - 创建令牌的 laravel 气闸问题:'tokenable_id' 不能为空

已升级到 Laravel 7 并已安装 Laravel/Airlock。

如果尝试创建令牌,请按照安装说明进行操作,但出现错误

SQLSTATE [23000]:完整性约束违规:1048列'tokenable_id'不能为空(SQL:插入personal_access_tokensname,,,,,,,,)值( api-token token, 31afd4da089878bd2cd562264bd2d8c789c7a1f91e47f6corder3969bce2fc19a7329 abilities,[ “ "WLR3:check_availability"], ?, App\Models\User, 2020-03-06 10:44:05, 2020-03-06 10:44:05))tokenable_idtokenable_typeupdated_atcreated_at

在我的 TokenController.php 我有:

我错过了什么可能导致此错误?

在用户模型上,它以:

0 投票
1 回答
651 浏览

php - Laravel 气闸与 Laravel 护照

我可以使用Laravel Airlock令牌获取帖子或创建新帖子,或者创建或更新我需要使用Laravel Passport的数据库中的任何行吗?

0 投票
1 回答
104 浏览

php - Laravel Airlock 路由经过身份验证 + 未经身份验证

我正在为我正在构建的应用程序使用新的Laravel Airlock 包。我有一条可供经过身份验证和未经身份验证的用户访问的路由。

在控制器中,我检查用户是否通过Auth::check();. 我的路线如下所示:

问题是,如果我向经过身份验证的用户(使用不记名令牌)发出请求,我无法在控制器中获取经过身份验证的用户(不知道为什么)。如果我将它添加auth:airlock到路由中,它只能由经过身份验证的用户访问(我不想要)。

authenticated如果有一个控制器,我如何确保让用户进入我的控制器?

0 投票
2 回答
194 浏览

laravel - Laravel Airlock 如何为未经身份验证的 Web 和 api 请求返回不同的响应

我正在使用 laravel + react native 开发一个移动应用程序和网站。

当您使用“auth:airlock”中间件向路由发送请求时,如果您传递了错误的 Bearer 令牌,它会将您重定向到 /login 页面。我想返回响应(“未验证”,403)。但是,与此同时,我想继续将未经身份验证的用户重定向到我的网络用户的 /login 页面。

所以我想实现:

  • 当未经身份验证的网络用户尝试浏览:domain.com/settings,他将重定向到 domain.com/login 页面。

  • 当请求到达 domain.com/api/settings 时,如果请求没有 Bearer 令牌或有错误的 Bearer 令牌,则响应将是 json。

0 投票
1 回答
561 浏览

php - CSRF 令牌不匹配 laravel 气闸 axios

  • 气闸版本:1.0.0
  • Laravel 版本:7.0.0
  • PHP版本:7.2.0
  • 数据库驱动和版本:MySql 5.7.23

描述:

我尝试使用来自不同域的 axios 登录。我在“mydomain.com”中有核心,在“seconddomain.com”中有反应站点。如果我尝试使用 axios API 请求从 seconddomain.com 登录到 mydomain.com,它工作正常,也没有 CSRF-COOKIE 请求。但是如果我尝试从我的反应“localhost:3000”登录到“mydomain.com”,我有“CSRF 令牌不匹配”。为什么?

这是我的配置:

在会话中

axios配置

axios登录

来自浏览器的 cookie - csrf-cooke 调用 在此处输入图像描述

来自浏览器的 cookie - 登录调用 在此处输入图像描述

0 投票
1 回答
175 浏览

laravel - axios.get /airlock/csrf-cookie 在 laravel 7 中不生效

我在我的 SPA 项目中使用 laravel airlock auth。

根据文档https://laravel.com/docs/master/airlock,登录时需要以下代码:

但是,当我注释代码时,登录脚本仍然可以访问 API 控制器。

这是我下面的代码:

那有什么用axios.get('/airlock/csrf-cookie')呢?

0 投票
1 回答
1284 浏览

laravel - 在从 axios 到 laravel 后端的 csrf 请求之后,Airlock 别名 Sanctum 没有在 cookie 中设置 csrf 令牌

我在 laravel 中有一个使用 Airlock 处理身份验证的虚拟主机。在 SPA 中,我向 axios 发出请求,以获取我将根据文档用于登录的 CSRF 令牌。

但我不能让响应设置cookie。我没有 cors 问题,我可以在响应中看到 csrf 令牌,但 set-cookie 标头似乎被忽略了。为了进行测试,我将同一个站点设置为无。我关闭了 http_only,我不知道我还能做什么。

我还将这两个实例放在“同一域”(/etc/hosts)上,以避免网络中出现警告,this set-cookie domain attribute was invalid with regards to the current host url但这不是解决方案。

谢谢

0 投票
3 回答
14614 浏览

php - Laravel sanctum csrf cookie 每个请求?

我正在使用 Laravel sanctum(前 Airlock)并且对此有疑问。我在文档中读到:

要验证您的 SPA,您的 SPA 登录页面应首先向 /sanctum/csrf-cookie 路由发出请求,以初始化应用程序的 CSRF 保护:

一旦 CSRF 保护被初始化,你应该向典型的 Laravel /login 路由发出 POST 请求。此 /login 路由可能由 laravel/ui 身份验证脚手架包提供。

这是否意味着对于我提出的每个请求,我都应该首先检查 cookie 是否已经设置?因为假设我有一个注册用户。在发出 POST 请求来注册用户之前,我应该首先发出 GET 请求以从我的后端获取 CSRF-Cookie,然后发出 POST 请求来注册用户。

现在用户被重定向到登录网页并被要求登录。那么前端是否首先必须检查是否有 CSRF-Cookie,如果没有,是否应该首先再次发出 GET 请求来获取 cookie?

最后一点也让我感到困惑,因为当调用 register 方法时,用户实际上并没有登录,所以用户必须被重定向到登录页面才能使用用户刚刚填写的凭据登录,这对我来说似乎就像糟糕的用户体验一样,对吧?