问题标签 [laravel-fortify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
64 浏览

laravel - 在 Laravel 中使用 Fortify 时如何控制 TOTP 窗口大小?

我已经在我的 Laravel 应用程序中安装了 fortify 包,并且正在使用 2FA 和 Google Authenticator 进行测试和测试。我的印象是过去生成的任何代码都不再有效,但作为一种尝试,我一直在等待代码失效,然后使用它并且它可以工作!观看此youtube 视频后,我了解到 TOTP 将仅具有一个窗口大小以允许使用过去生成的代码,并且此窗口大小使用 .a 时间单位,因为它是TOTP(基于时间的 One-时间密码),这是有道理的!

我的问题是 fortify 使用的默认窗口大小是多少?以及如何控制窗口大小以仅允许当前活动代码工作?

0 投票
0 回答
194 浏览

reactjs - 如何使用 laravel sanctum 保持登录并在 react SPA 中强化

请使用laravel sanctum 和 fortify为我的 react 应用程序创建一个登录 API ,它可以正常工作并验证用户,但是,每当我刷新 react spa 时,它会自动注销用户并将他路​​由回主页,我希望用户除非自己手动注销,否则保持登录状态。请问我该怎么做?

这是我使用材料 ui 的登录页面

这是我的 kernal.php 中间件组

这是在后端处理登录的 laravel fortify authenticateSessionController.php。

0 投票
0 回答
123 浏览

php - 访问受 Sanctum 保护的路由不需要 Laravel Sanctum CSRF 令牌

我正在创建一个 SPA,前端使用 VueJS,后端使用带有 Fortify 和 Sanctum 的 Laravel。用户从外部登录页面登录,然后被重定向到 SPA。我注意到在 SPA 中,我可以访问所有受保护的 POST 路由middleware(['auth:sanctum'],而无需对/sanctum/csrf-cookie.

此外,我已经完全按照文档中的描述设置了所有设置。

这是应该的吗?我搜索了很多,虽然我遇到了类似的问题,但我无法为我的外部登录页面找到明确的答案。如果是这样,这是如何工作的?

0 投票
2 回答
190 浏览

php - 无法更改 Laravel Fortify CreateNewUser 验证

我刚刚在一个正在工作的新项目中安装了 fortify,并且想更改验证规则。更改实际上不是问题,问题是在我更改了验证错误之后,我仍然收到名称、电子邮件和密码的默认验证错误,而我已经从验证规则中完全删除了名称字段。

这是我的 CreateNewUser 验证代码

当我向/register 路由发出请求时,我得到:

我也跑了php artisan cache:clear php artisan view:clearphp artisan config:clear但仍然得到相同的结果

0 投票
1 回答
496 浏览

php - 通过 Authenticator App 将 2FA 或 OTP(通过电子邮件)添加到 Laravel Fortify 2FA

我正在使用 Laravel 8.x 与 Fortify 和 Jetstream/Livewire 并打开 2FA / OTP:

配置/fortify.php

我还对我的路由组等进行了一些定制,以允许某些页面无需身份验证而其他页面。这很好用。然而,我们的许多用户并不是真正的技术人员,并且发现使用 Auth 应用程序很烦人(我有点同意这一点),尽管我喜欢使用 Fortify 在 2FA 中烘焙。

我想做的是:

  1. 修改现有的 Fortify 代码以选择性地允许通过电子邮件实现 2FA。可能很难实现一个或另一个,或两者兼而有之,以便用户可以使用任何可用的方法,但似乎可以允许用户选择他们想要的方法。使用 Auth App 内置 Fortify 方法,或使用其他包发送电子邮件 OTP 或通过在发布需要修改的文件后修改 Fortify 代码。

我环顾了一下,下面的那个看起来很简单,但我想将那个用于电子邮件方法,将 Fortify 用于 Authenticator 方法。那将是用户偏好选项。

github.com/seshac/otp-generator

我尝试通过使用 Fortify 的就地 Laravel 8.x JetStream 框架来做到这一点,方法如下:

视图/auth/login.blade.php

将表格更改为:

在表格之后添加了这个(我也有 Spatie Cookie 提醒包)。

然后在页面上添加了相当多的 Javascript:

这基本上绕过了常规的 /login 路由,直到我从后端收到回复,表明 OTP 已通过电子邮件验证(可能稍后是 SMS)。

在以下位置添加了一条新路线:

路线/web.php

在我的 EmailController 中创建了一些新方法(可能应该将其重构到不同的位置或文件,但如下所示。处理 OTP 验证以及设置时: Session::put('OTP_PASS', true);

Http/Controllers/EmailController.php

然后最后在:

Providers/FortifyServiceProviders.php,我检查了Session::get('OTP_PASS') === true以验证登录。它实际上似乎“工作”,但如果用户在数据库中也有电话号码,我想可能扩展它以支持通过 SMS 发送 OTP。我现在正在使用电子邮件,因为它总是填充在数据库中。他们可能有也可能没有电话号码,我会将通知方法设为用户首选项。

我在另一个框架上设置了 AWS SNS,但不确定如何在 Laravel 上进行设置。 在 generateAndSendOTP($identifier) 方法中,我想添加一些东西来检查他们的用户偏好通知方法,然后将 OTP 发送到电子邮件和/或通过 SMS。 所以这是一个问题。另一个问题只是现在的整个设置,因为我可能需要将东西移动到不同的位置,现在这似乎正在工作。最好打包最终通过电子邮件和/或短信添加 OTP。Authenticator App 中的烘焙方法不应该真正受到影响,我可能希望在他们通过电子邮件/短信登录后选择性地保护某些路由,以应对可能有多个用户使用帐户的情况,例如代理,但帐户所有者不希望他们通过 Authenticator App 进入受内置 2FA 保护的部分。

谢谢。

0 投票
1 回答
322 浏览

laravel - Laravel Fortify :: 通过 Livewire 调用 `updatePassword()` 函数

我正在使用 Livewire 构建我的 Laravel 项目,并且我还在使用 Fortify 实现安全/身份验证层。

但由于各种原因,我没有使用 Jetstream。话虽如此,Jetstream 显然使用了一些非常有用的功能和技术来完成它的工作,因此本着真正的创造力精神,我“借用”了以下“更新密码”表格作为 Jetstream 如何使用 Livewire 与 Fortify 交互。

这个 HTML 模板是用于构建我的表单的实际 HTML 代码的简化版本,但我已经去掉了所有样式和标签等复杂性,因此我们可以只关注重要的内容:

正如我们所见,Livewire 阻止了表单的默认提交,并将其重定向到updatePassword()Livewire 类中的函数。您可以在此处看到的函数如下所示:

这一切似乎都很好。当我(用户)按下[Change Password]Livewire 时,表单设置为非活动状态(以防止用户重复提交表单),当收到来自 Laravel/Livewire 的响应时,表单再次启用。而且……就是这样。

问题是我提交什么数据并不重要。如果我输入所有正确的值,密码不会更新!如果我输入不正确current_password,它不会出错。如果我提交current_password不匹配的正确passwordpassword_confirmation,我将获得相同的“没有发生”的体验(作为最终用户)。当我检查浏览器开发工具上的“网络”选项卡时,每次都会收到有效的 200 个响应,而没有详细报告任何明显的错误。我知道 PHP 函数正在被调用,因为如果我在其中放置dd($this)样式调试,JSON 响应会返回 Livewire 对象。

所以我的问题是以下......

Fortify 框架如何管理错误,我应该如何捕获它们(在 Livewire 中)给用户一些有用的反馈?

ErrorBag(在第一行代码中重置)是否以某种方式填充到$updater->update()函数中?

此外,我从 Jetstream 项目中复制(抱歉,借用)了这个解决方案。这是否也意味着 Jetstream 界面同样不直观(从最终用户的角度来看)?我在 Jetstream 项目中遗漏了一些更高层次的概念吗?

0 投票
0 回答
184 浏览

laravel - 错误包从 Laravel Livewire Blade 模板中消失

以下 PHP 代码用于捕获来自 Livewire 表单的输入。该表单会更新用户的密码,对于眼尖的人来说,您可能会发现其中大部分内容来自 Laravel Fortify 框架。

如果用户输入无效数据,dd($e);代码行会显示异常对象。此时抛出的异常对象包含一个名为 的错误包updatePassword。这是意料之中的,因为validateWithBag()函数规定应该如此。

到目前为止一切都很好。然而...

如果我尝试在 Livewire 模板(或就此而言,任何 Blade 模板)中捕获错误,命名的错误包就会消失。为了证明这一点,当检测到错误时,<div> 确实会出现以下内容。current_password

但是框架没有显示<div>以下内容:

如果我尝试$errors从刀片模板本身回显对象,则对象类型不再是 type \Illuminate\Validation\ValidationException,而是 type Illuminate\Support\ViewErrorBag

也许这是意料之中的。但问题是这个$errors对象中包含的唯一错误包是'default'. 错误消息本身是正确的,但它们不在我希望它们在的包中。

为什么是这样?!

这本身并不是一个大问题,但很高兴了解正在发生的事情。随着应用程序的扩展,error-message-id 中的冲突越来越有可能导致意外行为。

0 投票
0 回答
285 浏览

laravel - 注册后 Laravel Fortify 重定向消息

我正在使用 Laravel fortify 在我的网络应用程序中注册新用户。我在注册期间收到付款并创建了一个用户,但我想在登录后在主页上显示和提醒消息。如果我尝试使用

它不起作用说这个方法应该返回一个$user. 我怎样才能做到这一点?

0 投票
1 回答
155 浏览

php - 带有 Fortify 的 Laravel 8.55 显示登录时找不到类“App\Providers\User”

我已经安装了 laravel 8.55.0 并安装了 fortify 以进行身份​​验证处理。注册工作正常,登录也验证工作正常。但是当我输入电子邮件和密码(正确或错误)时,它显示未找到 Class 'App\Providers\User'我检查了所有文件但找不到问题,请你们为该问题提出一个好的解决方案:

验证有效 fortify 正在处理验证

错误 我收到此错误

错误说这条线有问题 错误代码

0 投票
0 回答
175 浏览

php - Laravel 用记住不工作来加强登录

对不起,我的英语很差,

我使用带有单页应用程序(vue js)的自定义登录的强化,如何将记住我添加到我的自定义登录中

注意:关闭时浏览器不会注销。它会一直持续到您完成到期会话