今天继续使用者登入的部分.
登入资料验证
当接收到表单送来的资讯之後,
首先我们要针对资料作验证.
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();
}
}
当输入不符合规则的时候就会跳出错误讯息
从资料库取得使用者资料
检查过表单输入的格式之後,
就要去资料库检查看看有没有这个使用者,
找到使用者之後,
再检查看看密码是否正确.
如果密码正确,
就能完成登入的动作,
当密码有错时,
就需要告知使用者输入的密码有误.
我们将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();
}
}
如果找不到使用者帐号,
就会显示帐号输入错误,
如果帐号正确但是密码错误,
就会显示密码输入错误.
取得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
函式就能够完成密码验证的动作了.
阵列操作介绍 (下篇) 介绍四种阵列运用: map filter find findlndex 3....
上一篇介绍了 plugin 是什麽、如何安装使用,以及推荐的插件。今天我们实际透过这些插件实作一个简...
接下来,我们目前开了两组的api的规范,紧接着就要在golang里面撰写实际的api了 以下为开设a...
今天要来分享我看 Youtube 影片做出来的 timer, 照惯例先放影片连结, 用他里面提到的观...
一讲到Flyweight,它最主要工作就是要减少记忆体的使用量,至於要怎麽做来能达到这样的效果呢...