标签: laravel-airlock

Laravel sainttum csrf cookie 每个请求?

我正在使用 Laravel sainttum (以前的 Airlock)并且有一个问题。我在文档中读到:

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

axios.get('/sanctum/csrf-cookie').then(response => {
// Login... }); 
Run Code Online (Sandbox Code Playgroud)

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

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

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

最后一点也让我感到困惑,因为在调用注册方法时,用户实际上并未登录,因此用户必须重定向到登录页面,以使用用户刚刚填写的注册凭据进行登录,这对我来说似乎是这样就像糟糕的用户体验一样,对吧?

php cookies laravel axios laravel-airlock

12
推荐指数
1
解决办法
3万
查看次数

测试抛出 RequestGuard::viaRemember() 在第二个请求上不存在

我有一个看起来像这样的测试:

$user = factory(User::class)->state('verified')->create();

$this->be($user);
$file = new UploadedFile(storage_path('testing/user.jpg'), 'user.jpg', 'image/jpeg');

$this->post('/account/missing-fields/upload', [
    'file' => $file
], ['Content-Type' => 'multipart/form-data'])->dump();
$this->post('/account/missing-fields/upload', [
    'file' => $file
], ['Content-Type' => 'multipart/form-data'])->dump();
Run Code Online (Sandbox Code Playgroud)
{#2983
  +"token": "hHAY7vD8fOiW8mVU9OIlxVSJv5FzAq52e0coaFHKRC"
  +"extension": "jpg"
  +"mime": "image/jpeg"
}
{#3072
  +"message": "Method Illuminate\Auth\RequestGuard::viaRemember does not exist."
  +"exception": "BadMethodCallException"
  +"file": "/app/backend/vendor/laravel/framework/src/Illuminate/Support/Traits/Macroable.php"
   ...
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,第一次请求成功,并返回一个令牌,当我第二次请求时,Laravel 突然说viaRemember方法不存在。

我不知道为什么它不应该工作。

应该注意的是,我可以更改发布请求,第二个请求总是会像上面那样失败。

通过框架,错误发生在Illuminate\Session\Middleware\AuthenticateSession,其中第一个请求有一个web守卫,而第二个请求由于某种原因有webairlock

在此输入图像描述

php laravel laravel-airlock laravel-sanctum

6
推荐指数
0
解决办法
837
查看次数

Laravel 气闸/密室身份验证检查

我如何在没有 auth:sanctum 的情况下获取或检查 auth 用户。我尝试auth()->user()从访客路由获取 auth 用户,但我只得到null. 是的,我传递了令牌,但仍然得到空嵌套用户。但是如果我尝试使用里面的路由就可以auth:sanctum了。

api laravel laravel-airlock laravel-sanctum

2
推荐指数
1
解决办法
1549
查看次数

标签 统计

laravel ×3

laravel-airlock ×3

laravel-sanctum ×2

php ×2

api ×1

axios ×1

cookies ×1