18910140161

Laravel database 如何优雅的判断登录名和密码是否匹配?

顺晟科技

2022-09-25 10:27:22

140

工具
illuminate/database 8.*
\Illuminate\Database\Capsule\Manager

场景:用户登录,有登录名和密码2个提交到后台,
其中登录名可以是用户名或者电子邮箱的任何一个(后面也许添加手机号等其他登录名),都是用同一个参数名传进来的,目前也不打算进行种类判断。
如何用Laravel的database的查询生成器去判断登录名和密码是否存在和是否匹配?

用户传进来的是下面2个参数。

$loginName
$password

数据库对应字段如下

说明字段名用户表user用户名user_name电子邮箱email密码password

用什么方法可以知道登录名是否存在?而且再去判断对应的密码是否正确?

目前临时使用如下,希望给与点评。


// 验证登录名和密码
$tableName = 'user';

$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection(get_DbConfig());
$capsule->setAsGlobal();

$sql_password = $capsule::table($tableName)
    ->orWhere(['user_name' => $loginName])
    ->orWhere(['email' => $loginName])
    ->value('password');

if (is_null($sql_password)) {
    $code = 4002;
    $msg[] = '登录名错误';
}

if ($sql_password !== $password) {
    $code = 4005;
    $msg[] = '登录名或者密码错误';
}

if ($code) {
    $result = [
        'code' => $code,
        'msg'  => $msg,
    ];
    die(json_encode($result, JSON_UNESCAPED_UNICODE));
}
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航