laravel - 根据条件 Laravel 8 将登录重定向到不同的路由
问题描述
我试图在登录成功时进行登录重定向,而不是在一个名为estado
= 2 的变量而是到重置密码视图时进行登录,不是因为登录失败,而是因为当estado
用户的变量等于 2 时,这意味着它具有默认值密码,出于安全原因,我想在用户第一次登录时更改密码。(默认密码与用户名相同,这就是我计划在您第一次登录时强制更改密码的原因)。
我是 Laravel 的新手,所以不确定我需要在哪里进行更改才能做到这一点,但我认为它在中间件 RedirectIfAuthenticated 中。
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null ...$guards
* @return mixed
*/
public function handle(Request $request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}
如果我没有明确我需要什么,我可以更好地解释它,英语不是我的主要语言,所以对任何问题感到抱歉。在我使用忘记我功能更改密码后,我将estado
变量更改为 1,我计划为此重新启动它,以便在将来用户登录时它可以正常登录并回家。
解决方案
该行:
return redirect(RouteServiceProvider::HOME);
家是不变的/home
您可以在此行添加 if 条件:
If Auth::user()->estado == 2
return redirect(“your reset password route”);
然而,解决此问题的更好方法是创建一个新的middleware
并将此条件放入其中,并使用此中间件保护所有经过身份验证的路由。
推荐阅读
- elasticsearch - 无法在弹性 7.5.1 中启动 Packetbeat
- jquery - 如何制作平滑的块外观?
- javascript - 根据单选按钮选择打开下拉菜单
- java - 防止 Spring Boot 缓存文件
- javascript - List.js 搜索对象?
- java - 使用 tess4j 库的 Tesseract OCR
- ubuntu-16.04 - ROS-Kinetic:无效标签:无法加载命令参数:命令返回代码 [1]
- javascript - 列表中新添加的项目不是 React 中的重新渲染组件
- android - 无法使用 MultiDex 启用 facebook 登录
- android - 有没有办法或解决方法来使用 sqflite 库在颤振中执行表连接?