Laravel 登录验证小技巧

本文介绍了在 Laravel 中如何利用 `exists` 验证规则结合条件查询来确保只有启用的用户才能通过登录验证。通过在验证时添加一个 `where` 条件,当 `admin_users.enabled` 为 0(表示用户已被禁用)时,系统会返回一个自定义错误消息:“该用户已停用!”。此外,还提及了在使用 "mews/captcha" 验证码时的情况,以及在 laravel-admin 框架下类似的方法。
摘要由CSDN通过智能技术生成

我们经常会用到一个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|stri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值