后台登录逻辑
- 接受表单提交 的数据
$input=$request->except('_token');
- 进行表单验证
$validator=Validator:make('需要验证的表单数据','验证规则,'错误提示信息‘);
$validator=\Validator::make($request->input(),[
'Student.name'=>'required|min:2|max:20',
'Student.age'=>'required|integer',
'Student.sex'=>'required|integer' ,
],[
// attribute属性
'required'=>':attribute 为必选项',
'min'=>':attribute 长度不符合要求',
'integer'=>':attribute 必须为整数',
],[
'Student.name'=>'姓名',
'Student.age'=>'年龄',
'Student.sex'=>'性别',
]);
第二种
$rule=[
验证规则
];
$msg=[
错误提示信息
];
$validator=Validator::make($input,$rule,$msg)
- 验证是否有此用户(用户名 密码 验证码)
新建model:user(在databse.php里加前缀’prefix’=>‘blog’)
- 关联数据表
- 主键
- 允许批量操作的字段(public $guarded=[];)
- 是否维护时间戳
$user=User::where('user_name',$input['username'])->first();)
if(!user){
return redirtect('admin/ogin')->with('error','用户名为空');
}
if($input['password']!=Crypt::decrypt($user->user_pass)){
return redirtect('admin/ogin')->with('error','密码为空');
}
if($input['code']==session()->get('code'))
- 保存用户信息到session中
session()->put('user',$user),
- 跳转到后台首页
return redired('admin/index');
//加密算法
- md5加密,生成一个32位的字符串
$str='salt'.'12345';
return md5($str);
- 哈希加密,65位数
$hash=Hash::make($str);
if(Hash::check($str,$hash)){return ’密码正确‘;}//判断密码和加密密码是否一致
- crypy加密(),255位数
$crypy_str=Crypt::encrypt($str);
解密:
if(Crypt::decrypt($crypt_str)==$str){return ’密码正确‘;}
添加中心件
- 声明中心件
- 写中间件应用逻辑
- 注册中心件
- 使用中心件
用户模块
资源路由
- index获取用户列表
- create返回用户添加操作
- store执行添加操作
- show显示一条用户记录
- edit返回一个修改页面
- update执行一个修改操作
- destory执行删除操作
增删改查功能实现
- 增加操作:
- 接收前台表单提交的数据
- 进行表单验证
- 添加到数据库user表
4.根据是否成功,给客户端返回一个json格式的反馈
- 修改操作:
- 根据id获取要修改的值
$user=User::find($id);
- 获取要修改的用户名
$username=$request->input('usrname');
$user->user_name=$username;
$res=$user->save();
- 返回json值给ajax
if($res){
$data = [
'status' => 1,
'message' => '修改成功',
];
}else{
$data = [
'status' => 0,
'message' => '修改失败',
];
}
return $data;
- 删除操作:
οnclick="member_del(this,'要删除的id')" href="javascript:;"
ajax:
function member_del(obj,id) {
layer.confirm('确认要删除吗?',function (index) {
$.post('user'+id,{"_method":"delete","_token":"{{csrf_token()}}"},function (data) {
// console.log(data);
if (data.status==0){
$(obj).parents("tr").remove();
layer.msg(data.message);
}else {
layer.msg(data.message);
}
})
})
}
ajax的使用
form.on('submit(add)', function(data){
$.ajax({
{{--// 1.2提交方法{{}}--}}
type:'POST',
{{--1.3提交路径{{}}--}}
// url:'/dormitory/tenantInfo',
url:'/student3',
// 1.4数据格式
dataType:'json',
{{--1.5 HTTP请求头,_token令牌 需要在form中增加{{csrf_field()}}--}}
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
{{--1.6 获取数据,layui规范方法{{}}--}}
data:data.field,
{{--1.7.0传输数据至后台,成功情况返回数据信息{{}}--}}
success:function (data) {
{{--1.7.1采用console.log(data)控制器中写return 111来验证前端是否书写正确{{}}--}}
// console.log(data);
{{--1.7.2判断后台传回的值:成功:弹层提示添加成功,并刷新父页面{{}}--}}
if(data.status == 1){
layer.alert(data.message,{icon:6},function () {
parent.location.reload(true);
})
}else{
{{--1.7.3判断后台传回的值:失败,只弹层,不操作{{}}--}}
layer.alert(data.message,{icon:5})
}
},
{{--1.8传输错误{{}}--}}
error:function() {
//错误信息
}
})
return false;
});
{{--End:1.Ajax添加信息{{}}--}}
分页
后端:
$user=User::paginate();
//每页几条
前端:
<div class="page">
// {{$user->appends($request->all())->render()}}
{!! $user->render() !!}
</div>
多条件查询
资源类型
dbx模块中使用两种资源类型。第一个是数据库连接的链接对象,第二个是保存查询结果的结果对象。
过滤
后台:(自己选定分页几条,用户名,邮箱进行筛选)
$where = function ($query) {
$query->where('d_id', '=', '82')
->orWhere('d_id', '=', '83');
}
//$query保存查询结果的结果对象。
//如果需要传入变量 就需要use一下
$user=User::orderBy('user_id','asc')->where(function($query) use($request){
$username=$request->input('username');
$email=$request->input('email');
if(!empty($username)){
$query->where('user_name','like','%'.$username.'%');
}
if(!empty($email)){
$query->where('email','like','%'.$email.'%');
}
})->paginate($request->input('num')?$request->input('num'):3);
return view('admin.user.list',compact('user','request));
客户端
判断:
<select name="num" id="fenye">
<option value="3" @if($request->input('num')==3) selected @endif>3</option>
<option value="5" @if($request->input('num')==5) selected @endif>5</option>
</select>
<div>
{{--autocomplete 属性规定输入字段是否应该启用自动完成功能。--}}
<input type="text" value="{{$request->input('username')}}" autocomplete="off">
<input type="text" value="{{$request->input('email')}}" autocomplete="off">
</div>
分页:
<div class="page">
{{$user->appends($request->all())->render()}}
</div>
后台-RBAC权限管理
作用:控制不同的角色合理的访问不同的资源
权限模型:RBAC——基于角色的权限控制
优点:
1.简化了用户和权限的关系
2.易扩展、易维护
权限赋值给角色
用户赋值角色