天天看点

Laravel 登录验证小技巧

我们经常会用到一个boolean字段来确定用户是否已经停用,比如

...
$table->boolean('enabled')->default(true);
...
           

admin_users.enabled 字段,为0时表示已禁用.

最简单的办法是可以使用exists验证规则,通过添加对比对字段(username),同时对比的字段添加where条件enabled必须 等于1(true)时,那么如果当enabled等于0(false),则不会找到这个字段,所以会报一个错误 “选定的 用户名 字段是无效的.”

然后再覆盖这个消息,‘exists’ => ‘该用户已停用!’

$credentials = $request->only(['username', 'password']);
$validator = Validator::make($credentials, [
    'username' => 'required|string|exists:admin_users,username,enabled,1',
    'password'        => 'required|string',
], [
    'exists' => '该用户已停用!',
]);
           

如果使用了验证码(本例使用的是"mews/captcha")

$credentials = $request->only(['username' 'password', 'captcha']);
$validator = Validator::make($credentials, [
    'username' => 'required|string | exists:admin_users,username,enabled,1',
    'password'        => 'required|string',
    'captcha'         => 'required|captcha',
], [
    'captcha.required' => '请填写验证码',
    'captcha.captcha'  => '验证码错误',
    'exists'           => '该用户已停用!',
]);
           
另: 这里使用的是laravel-admin 代码稍微有点差异, 但思路是没有问题的

亲测通过