laravel - Laravel Passport 的 Laravel Dusk 身份验证问题
问题描述
如果应用程序使用 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);
但还是一样。
这不是唯一的问题,我认为主要问题也是我无法通过填写表格并单击“登录”来登录 Dusk
$browser->visit('/login')
->type('@email', 'john@doe.com')
->type('@password', 'password')
->click('@login-button')
->waitForLocation('/');
但同样,如果您停止测试,->stop()
您可以手动单击该按钮,它会让您登录。
如果您的应用程序不使用基本身份验证,Laravel Dusk 是否无用?
解决方案
解决了。
问题是我的 Dusk.env
文件有APP_URL=localhost:3000
前端所在的位置,但我的 APIs.env
文件有APP_URL=api.exmaple.com
,这就是为什么在我的 中AuthController
,我从 <- 发出令牌env('APP_URL').'/oauth/token'
,导致 Dusk envlocalhost:3000/oauth/token
是 ofc 404
我将其更改为env('API_URL')
并将该值添加到我的两个.env
文件中。
推荐阅读
- android - 当我在不同的 Activity 中将 RecycledViewPool 设置为不同的 RecyclerView 时,它是否可以正常工作?
- react-testing-library - 使用 React 测试库在嵌套组件中测试 data-testid 的最佳实践?
- ios - 使用 nil 合并运算符来增加值的问题
- spring - 当响应正文中的某些字段不为空时,Spring WebClient 将某些字段设置为空
- sql - 返回 Elasticsearch SQL 查询中的所有行
- java - 2000-1-2 错误的 Java LocalDate 格式
- azure - 使用 Azure REST API 检索 Linux 虚拟机的存储使用情况
- python - Keras - 保存中间层的输出
- c++ - 错误损坏的大小与 prev_size:尝试在 C++ 中打开和读取文件描述符时
- ios - 以弹出窗口的形式启动 iOS 应用程序