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
文件中。
如果应用程序使用 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
文件中。