以附加条件登录第5.3级


Login with additonal condition laravel 5.3

我正试图通过明显的电子邮件和密码验证用户,并且如果ban_status在数据库中设置为0。

我已经看了最新的laravel文档,我已经在AuthenticateUsers.php

中尝试了这种方式
protected function validateLogin(Request $request)
{
    $this->validate($request, [
        $this->username() => 'required', 'password' => 'required', 'ban_status' => '0',
    ]);
}

据我所知,这不会做任何事情,无论是否有禁止状态为0,都会登录用户,我应该在哪里做这个额外的条件?

谢谢

在你的代码中,你有:

    $this->validate($request, [
        $this->username() => 'required', //????
                             'password' => 'required', 
                             'ban_status' => '0',
    ]);
  • 我不知道为什么你有"要求"本身,所以我在想沿着这条线的东西:

    $user = $this->username();
    $this->validate($request, [
        $this->username() => 'email' =>    'bail|required|email|exists:dbnamehere.tablenamehere|min:7', //can also be username
                             'password' => 'bail|required|min:8',                                  
                             'ban_status' => ['required',
                                               Rule::unique('users_table_name_here')->where(function ($query) use ($user) {
                                                      $query->where(['account_id',$user],
                                                                    ['ban_status', 0])]
                                               }) 
    ]);
    

这可能不能马上工作,所以你可能需要稍微修改一下,但它很好地利用了Laravel的Eloquent模型。希望这能给你们指明正确的方向。另外,请确保将表名和字段名更改为数据库中的名称。

快乐编码=)

参考:

https://laravel.com/docs/5.3/validation