首页 > 解决方案 > 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 是否无用?

标签: laraveltddlaravel-passportlaravel-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文件中。


推荐阅读