1.定义一条路由
Route::group(['prefix'=>'admin','namespace'=>'Admin'],function (){
//登录
Route::match(['get','post'],'/','Index@login');
});
2.创建控制器Index,模型Admin,以及视图login.blade.php的创建和前端模板的引入
登录功能
通过ajax异步提交form表单中的数据,将数据接收,再将数据传递给模型,最好验证再返回给控制器,由控制器传递给客户端。
Index控制器中login方法代码如下
//登录
public function login()
{
if (request()->isMethod('post')){
$data=request()->only(['username','password']);
$result=(new Admin)->login($data);
if ($result==1){
$msg=[
'code'=>1,
'msg'=>'登录成功',
'url'=>url('admin/index')
];
}else{
$msg=[
'code'=>0,
'msg'=>$result,
];
}
return $msg;
}
return view('admin/index/login');
}
Admin模型中login方法代码如下
protected $fillable=['username','password','nickname','email'];
protected $dateFormat='U';//设置时间类型为时间戳
//登录
public function login($data)
{
//验证规则
$rule=[
'username'=>'bail|required',
'password'=>'required',
];
//错误提示信息
$msg=[
'username.required'=>'用户名不能为空',
'password.required'=>'密码不能为空'
];
//创建验证器
$validator=Validator::make($data,$rule,$msg);
if ($validator->fails()){
return $validator->errors()->first();
}
//查询
$result=$this->where($data)->first();
if ($result){
//session记录信息
$sessionData=[
'username'=>$result['username'],
'nickname'=>$result['nickname'],
'email'=>$result['email'],
];
session(['admin'=>$sessionData]);
if ($result['status']!=1){
return "此用户被禁用";
}
return 1;
}else{
return "用户名或密码错误";
}
}
HTML代码如下:引入layer插件,并且为登录按钮添加一个id为login
<form>
<div class="loginbox-title">登录div>
<div class="loginbox-or">
<div class="or-line">div>
div>
<div class="loginbox-textbox">
<input type="text" class="form-control" name="username" placeholder="用户名" />
div>
<div class="loginbox-textbox">
<input type="password" class="form-control" name="password" placeholder="密码" />
div>
<div class="loginbox-forgot">
<a href="{{url('admin/forget')}}">忘记密码?a>
div>
<div class="loginbox-submit">
<input type="submit" id="login" class="btn btn-primary btn-block" value="登录">
div>
<div class="loginbox-signup">
<a href="{{url('admin/register')}}">注册账户a>
div>
form>
通过jquery的ajax异步提交数据到Index控制器中login方法
$(function () {
$('#login').click(function () {
$.ajax({
url:"{{url('admin')}}",
type:'post',
data:$('form').serialize(),
dataType:'json',
success:function (data) {
if (data.code==1){
layer.msg(data.msg,{
icon:6,
time:2000,
},function () {
location.href=data.url;
});
}else{
layer.open({
title:"用户登录失败",
content:data.msg,
icon:5,
anim:6
})
}
}
});
return false;
});
});