Jar*_*ler 5 xmlhttprequest laravel postman laravel-authentication laravel-fortify
使用 Postman,我将以下字段发送到 URL,以便在数据库中注册用户http://mywebsite/register:
电子邮件
密码
确认密码
姓名
根据文档https://laravel.com/docs/8.x/fortify#registration(我从中找到了上述字段),Fortify已经定义了路线register,所以我不需要自己定义它。
根据文档,并且根据我的需要,我不需要创建注册表:我直接使用 Postman 将这些注册数据/register作为 XHR POST 请求数据发送到 Laravel Fortify 的路由。此外,我不需要 Fortify 返回视图,因此我禁用了它们(https://laravel.com/docs/8.x/fortify#disabling-views)。事实上,我只是等待 HTTP 代码响应,我将在 Postman 的返回数据中看到该响应(见下文)。
由于我已禁用视图并且由于我发送了 XHR POST 请求(在 Postman 中,我将随注册请求一起发送此 HTTP 标头:)X-Requested-With = XMLHttpRequest:
如果注册尝试成功,Fortify 会将用户重定向到通过应用程序的 fortify 配置文件中的 home 配置选项配置的 URI。如果登录请求是 XHR 请求,将返回 200 HTTP 响应。
如果请求不成功,用户将被重定向回注册屏幕,并且验证错误将通过共享的 $errors Blade 模板变量提供给您。或者,对于 XHR 请求,验证错误将通过 422 HTTP 响应返回。
(https://laravel.com/docs/8.x/fortify#registration)
它正确注册了用户。但我在 Postman 中看到的结果是Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException. 事实上,Fortify 正试图进入家庭视野。
为什么 Fortify 似乎仍然尝试到达返回的视图路由(未定义,因为我不需要它们),因为我的请求正确是 XHR POST 且我已禁用 Fortify 配置文件中的视图?
我想我在 Fortify 文档(https://laravel.com/docs/8.x/fortify#registration)中发现了一些“有趣”的东西。那里有些东西不完整。我想我已经找到了文档中缺少的内容!
我解释。
就我而言,手机应用程序会显示注册表单。它将 Fortify 的注册必填字段发送到Fortify 定义的email, password, confirmation_password, ...URL 。<LaravelSite>/registerFortify 成功注册用户并将其重定向到主路由。然而,我没有定义任何主路由,因为正如您所理解的,这个 Laravel 站点是一个 API。结果=>我有这个错误:Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException。
我已遵循文档:我已禁用视图(在 Fortify 配置文件中)。我已经正确指定手机应用程序(实际上是 Postman)发送的请求是 XHR 请求(事实上,我已经发送了标头 X -Requested-With = XMLHttpRequest)。因此,Fortify 应该返回一个 HTTP 代码(200此处),而不是尝试返回主页 URL。
文档中缺少什么?=====>>>> 中间件RedirectIfAuthenticated被执行。在它的handle方法中有一个重定向:return redirect(RouteServiceProvider::HOME);。为了使 Fortify 正常工作,必须通过注释来禁用该行。
Fortify 文档应该包含类似上面句子的内容。
应在其 Github 存储库上创建 PR 或问题。
编辑:我们还必须发送此 HTTP 标头:(Accept: application/json否则在注册成功的情况下,它仍然会显示 404)
| 归档时间: |
|
| 查看次数: |
1973 次 |
| 最近记录: |