我正试图通过明显的电子邮件和密码验证用户,并且如果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