[Day 30] 会员登入及登出(二)

今天继续使用者登入的部分.

登入资料验证

当接收到表单送来的资讯之后,
首先我们要针对资料作验证.

app/Http/Controllers/UserAuthController.php新增signInProcess方法

//处理登入资料public function signInProcess(){    //接收输入资料    $input = request()->all();    //验证规则    $rules = [        //帐号(E-mail)        'account' => [            'required',            'max:50',            'email',        ],        //密码        'password' => [            'required',            'min:5',        ],    ];    //验证资料    $validator = Validator::make($input, $rules);    if($validator->fails())    {        //资料验证错误        return redirect('/user/auth/sign-up')            ->withErrors($validator)            ->withInput();    }}

当输入不符合规则的时候就会跳出错误讯息
http://img2.58codes.com/2024/20105694ulJO5LgeJ8.png

从资料库取得使用者资料

检查过表单输入的格式之后,
就要去资料库检查看看有没有这个使用者,
找到使用者之后,
再检查看看密码是否正确.
如果密码正确,
就能完成登入的动作,
当密码有错时,
就需要告知使用者输入的密码有误.

我们将signInProcess方法修改如下

//处理登入资料public function signInProcess(){    //前面省略    //取得使用者资料    $User = User::where('account', $input['account'])->first();    if(!$User)    {        //帐号错误回传错误讯息        $error_message = [            'msg' => [                '帐号输入错误',            ],        ];        return redirect('/user/auth/sign-in')            ->withErrors($error_message)            ->withInput();    }    //检查密码是否正确    $is_password_correct = Hash::check($input['password'], $User->password);    if(!$is_password_correct)    {        //密码错误回传错误讯息        $error_message = [            'msg' => [                '密码输入错误',            ],        ];        return redirect('/user/auth/sign-in')            ->withErrors($error_message)            ->withInput();    }}

如果找不到使用者帐号,
就会显示帐号输入错误,
如果帐号正确但是密码错误,
就会显示密码输入错误.
http://img2.58codes.com/2024/20105694mqoBRurkoK.png

取得Collection资料

我们使用ORM的方式,
取得的是Illuminate\Support\Collection;物件阵列或单一物件,
当使用first的时候,
如果从资料库找不到资料就会回传null,
当我们要取得$User底下的account栏位时,
我们可以用$User->account来取得,
其他栏位也是用同样的方式,
能够取得在继承Model的物件中$fillable定义的所有栏位,
以及id、created_at和updated_at等栏位资料.

验证密码

在这里我们使用以下方法来验证密码

//检查密码是否正确$is_password_correct = Hash::check($input['password'], $User->password);

因为密码是经过加密,
而且这种加密方式每次结果可能会不同,
所以要透过特定的方法来做验证,
当然Laravel已经帮我们写好了,
我们只要使用Hash::check函式就能够完成密码验证的动作了.


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章