您的位置:首页 > 编程语言 > PHP开发

Laravel—用户认证系统(一)

2018-01-17 17:20 525 查看
laravel有自带的一系列完整的流程,在前后端分离的情况,后端不是会调用视图层的

最终的目的:接受数据,并返回数据的处理结果

注册

流程: 接受数据--->验证数据--->调用模型,存入数据---> 返回处理结果

use App\Model\Frontend\Member;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Auth;

...
public function register()
{
$send = ['state' => false, 'error' => $this->error['100']];
$params = $this->req->all();
$retCheck = $this->checkRegMsg($params);
if (!$retCheck) {
$send['error'] = $this->error['101'];
}
if ($this->create($params)) {
unset($send['error']);
$send['state'] = true;
}
return response()->json($send);
}

private function checkRegMsg($data)
{
$rules = [
'name' => 'required|string|max:255',
'password' => 'required|string|min:6',
'mobile' => 'required|string|max:255|unique:member',
'email' => 'required|string|email|max:255|unique:member'
];
$validator = Validator::make($data, $rules);
return $validator->fails() ? false : true;
}

// 通过Member模型,插入数据库
private function create(array $data)
{
$pwd = $data['password'] ? '123456' : $data['password'];
$user = Member::create([
'name' => $data['name'],
'password' => bcrypt($pwd),
'email' => $data['email'],
'mobile' => $data['mobile'],
]);
return $user->id ?: false;
}

登录

流程:接受数据--->--->验证数据--->登录限制检测--->匹配用户模型--->返回处理结果

use App\Model\Frontend\Member;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Auth;
use Illuminate\Foundation\Auth\ThrottlesLogins;

...
// Laravel自带的一个登录Trait
use ThrottlesLogins;

// 最终的登录操作,是交给Laravel的guard处理,如果不指定,默认使用web也就是sessionguard
public function login()
{
$send = ['state' => false, 'error' => $this->error['100']];
$params = $this->req->all();
$retCheck = $this->checkLoginMsg($params);

if (!$retCheck) {
$send['error'] = $this->error['101'];
}
if ($this->hasTooManyLoginAttempts($this->req)) {
$send['error'] = $this->error['102'];
}

$remember = $this->req->remember ?: false;

// 此处是调用SessionGuard类的attemp方法,如果验证通过,将会执行登录操作
$retLogin = Auth::guard('web')->attempt([
'mobile' => $this->req->mobile,
'password' => $this->req->password
], $remember);

if ($retLogin) {
unset($send['error']);
$send['state'] = true;
}
return response()->json($send);
}

// 验证方法与注册时的类似

退出

// 清理用户的登录信息以及session
public function logout()
{
Auth::logout();
$ret = $this->req->session()->invalidate();
$state = $ret ?? true;
return ['state' => $state];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  laravel PHP 用户认证