如果用户没有为他们的个人资料启用 2 因素身份验证(理想情况下希望对所有路线都这样做),我一直在寻找一种将登录用户重定向到他们的个人资料页面的方法。 我正在使用 Laravel 8、Fortify 和 Jetstream。
如果用户表中的two_factor_secret和two_factor_recovery_codes对于相关用户为 NULL,则似乎未启用 2 因子。如果这些 DB 列不为 NULL,则至少启用它。一个可能检查的地方如下所示:
/app/Providers/FortifyServiceProvider.php
它默认设置:
$user = User::where('email', $request->email)->first();
验证登录,然后如果他们通过身份验证,我会做一些家务。
默认情况下,脚本末尾有一个 return $user。
我可以检查脚本中的 $user->two_factor_secret 是否不为空,所以如果有可能以某种方式动态更改路由可能会起作用,至少就初始登录而言,但我会更喜欢检查应用程序中每条路线的 2 因素启用状态(只是状态,而不是代码)。我不太清楚该怎么做?在某处的ServiceProvider中或在routes/web.php等中。我想有可能以某种方式将我的所有路由包装在一个组中,并且他们在处理之前以某种方式检查routes/web.php中的两步状态要求的路线?
任何帮助,将不胜感激。真的有两种选择。如果他们没有激活两步(即填充数据的数据库字段),则在登录时只是一个警告并重定向到个人资料页面(/用户/个人资料),然后是更全局的选项,始终重定向到任何人的个人资料页面如果他们没有启用两步路由(这将阻止导航到个人资料页面以外的任何其他页面)。
谢谢。