Laravel Laravel Passport 的 Dusk 身份验证问题

Laravel Dusk auth issues with Laravel Passport

如果应用程序使用 Laravel Passport 进行身份验证,则无法使用 Laravel Dusk 测试应用程序。它总是 404,如果你用 ->stop() 停止测试,它就会开始工作。

应用程序位于:localhost:3000 所有请求都代理到 api.example.test

我已尝试对测试中的用户进行身份验证:

$this->actingAs(User::find(1), 'api');
$browser->loginAs(User::find(1));
Passport::actingAs($this->user);

但还是一样。

这不是唯一的问题,我认为主要问题还在于我无法通过填写表格并单击 "login"

来使用 Dusk 登录
$browser->visit('/login')
   ->type('@email', 'john@doe.com')
   ->type('@password', 'password')
   ->click('@login-button')
   ->waitForLocation('/');

但是,如果您使用 ->stop() 停止测试,您可以手动单击该按钮,它将让您登录。

如果您的应用程序不使用基本身份验证,LaravelDusk 就没用了吗?

已解决。

问题是我的 Dusk .env 文件有前端所在的 APP_URL=localhost:3000,但我的 APIs .env 文件有 APP_URL=api.exmaple.com,这就是为什么在我的 AuthController,我从 env('APP_URL').'/oauth/token' 发出了令牌 <- 导致 Dusk env 到 localhost:3000/oauth/token,即 ofc 404

我将其更改为 env('API_URL') 并将该值添加到我的两个 .env 文件中。