Laravel 新的密码哈希-在尝试登录时将用户重定向到密码重置

Laravel 新的密码哈希-在尝试登录时将用户重定向到密码重置,laravel,authentication,Laravel,Authentication,在我的项目的前一个版本中,这里有一个“”我们没有对密码进行任何适当的哈希。所以我想使用Laravel的散列,并邀请用户创建一个新密码 我的用户表中有一个新的密码列。如果用户尝试登录时,新密码不存在(空列),我们会自动执行“重置密码”。我想知道在哪里执行此验证: 类登录控制器扩展控制器 { 公共功能登录(请求$Request) { //检查用户是否有空密码 //如果有的话 重定向('/password/reset'); //否则 //使用普通登录功能 } } 那是正确的地方吗?我是否需要重写“e

在我的项目的前一个版本中,这里有一个“”我们没有对密码进行任何适当的哈希。所以我想使用Laravel的散列,并邀请用户创建一个新密码

我的用户表中有一个新的密码列。如果用户尝试登录时,新密码不存在(空列),我们会自动执行“重置密码”。我想知道在哪里执行此验证:

类登录控制器扩展控制器
{
公共功能登录(请求$Request)
{
//检查用户是否有空密码
//如果有的话
重定向('/password/reset');
//否则
//使用普通登录功能
}
}

那是正确的地方吗?我是否需要重写“else”中的所有登录内容?(很抱歉,这是一个基本问题)

我建议您为您的案例创建一个中间件(以EnsurePasswordIsAdded为例),而不在控制器中包含验证过程,由于控制器通常包含与数据库或外部API交互以向用户提供响应的函数,而您的情况并非如此,因此您只是在筛选/验证请求

以下是有关Laravel中中间件的文档链接:

下面是一个代码建议:

 public function handle($request, Closure $next)
 {
    if ( !User::find($request->email)->hasPassword() ) {
        return redirect('password-reset')->with('email',$request->email);
    }
    return $next($request);
 }

太多了!我像Route::get('/login',Auth)一样添加了它\LoginController@login')->name('login')->中间件('ensurepasswordadded');而且似乎有效:)