问题标签 [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.
laravel - 在 Laravel 中使用 Fortify 时如何控制 TOTP 窗口大小?
我已经在我的 Laravel 应用程序中安装了 fortify 包,并且正在使用 2FA 和 Google Authenticator 进行测试和测试。我的印象是过去生成的任何代码都不再有效,但作为一种尝试,我一直在等待代码失效,然后使用它并且它可以工作!观看此youtube 视频后,我了解到 TOTP 将仅具有一个窗口大小以允许使用过去生成的代码,并且此窗口大小使用 .a 时间单位,因为它是TOTP(基于时间的 One-时间密码),这是有道理的!
我的问题是 fortify 使用的默认窗口大小是多少?以及如何控制窗口大小以仅允许当前活动代码工作?
reactjs - 如何使用 laravel sanctum 保持登录并在 react SPA 中强化
请使用laravel sanctum 和 fortify为我的 react 应用程序创建一个登录 API ,它可以正常工作并验证用户,但是,每当我刷新 react spa 时,它会自动注销用户并将他路由回主页,我希望用户除非自己手动注销,否则保持登录状态。请问我该怎么做?
这是我使用材料 ui 的登录页面
这是我的 kernal.php 中间件组
这是在后端处理登录的 laravel fortify authenticateSessionController.php。
php - 访问受 Sanctum 保护的路由不需要 Laravel Sanctum CSRF 令牌
我正在创建一个 SPA,前端使用 VueJS,后端使用带有 Fortify 和 Sanctum 的 Laravel。用户从外部登录页面登录,然后被重定向到 SPA。我注意到在 SPA 中,我可以访问所有受保护的 POST 路由middleware(['auth:sanctum']
,而无需对/sanctum/csrf-cookie
.
此外,我已经完全按照文档中的描述设置了所有设置。
这是应该的吗?我搜索了很多,虽然我遇到了类似的问题,但我无法为我的外部登录页面找到明确的答案。如果是这样,这是如何工作的?
php - 无法更改 Laravel Fortify CreateNewUser 验证
我刚刚在一个正在工作的新项目中安装了 fortify,并且想更改验证规则。更改实际上不是问题,问题是在我更改了验证错误之后,我仍然收到名称、电子邮件和密码的默认验证错误,而我已经从验证规则中完全删除了名称字段。
这是我的 CreateNewUser 验证代码
当我向/register 路由发出请求时,我得到:
我也跑了php artisan cache:clear
php artisan view:clear
,php artisan config:clear
但仍然得到相同的结果
php - 通过 Authenticator App 将 2FA 或 OTP(通过电子邮件)添加到 Laravel Fortify 2FA
我正在使用 Laravel 8.x 与 Fortify 和 Jetstream/Livewire 并打开 2FA / OTP:
配置/fortify.php
我还对我的路由组等进行了一些定制,以允许某些页面无需身份验证而其他页面。这很好用。然而,我们的许多用户并不是真正的技术人员,并且发现使用 Auth 应用程序很烦人(我有点同意这一点),尽管我喜欢使用 Fortify 在 2FA 中烘焙。
我想做的是:
- 修改现有的 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 保护的部分。
谢谢。
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
不匹配的正确password
和password_confirmation
,我将获得相同的“没有发生”的体验(作为最终用户)。当我检查浏览器开发工具上的“网络”选项卡时,每次都会收到有效的 200 个响应,而没有详细报告任何明显的错误。我知道 PHP 函数正在被调用,因为如果我在其中放置dd($this)
样式调试,JSON 响应会返回 Livewire 对象。
所以我的问题是以下......
Fortify 框架如何管理错误,我应该如何捕获它们(在 Livewire 中)给用户一些有用的反馈?
ErrorBag
(在第一行代码中重置)是否以某种方式填充到$updater->update()
函数中?
此外,我从 Jetstream 项目中复制(抱歉,借用)了这个解决方案。这是否也意味着 Jetstream 界面同样不直观(从最终用户的角度来看)?我在 Jetstream 项目中遗漏了一些更高层次的概念吗?
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 中的冲突越来越有可能导致意外行为。
laravel - 注册后 Laravel Fortify 重定向消息
我正在使用 Laravel fortify 在我的网络应用程序中注册新用户。我在注册期间收到付款并创建了一个用户,但我想在登录后在主页上显示和提醒消息。如果我尝试使用
它不起作用说这个方法应该返回一个$user
. 我怎样才能做到这一点?
php - Laravel 用记住不工作来加强登录
对不起,我的英语很差,
我使用带有单页应用程序(vue js)的自定义登录的强化,如何将记住我添加到我的自定义登录中
注意:关闭时浏览器不会注销。它会一直持续到您完成到期会话