摘要:一.登陆实现 * 登陆方法,就是在验证登陆模板传过来的数据(username.password),依据用户名来查询User数据表,如果存在并密码正确,则将用户名传入SESSION['username'],并跳转到后台首页$.post('{:url(\'Login/loginCheck\')}',{ &
一.登陆实现
* 登陆方法,就是在验证登陆模板传过来的数据(username.password),依据用户名来查询User数据表,如果存在并密码正确,则将用户名传入SESSION['username'],并跳转到后台首页
$.post('{:url(\'Login/loginCheck\')}',{
'username':$('#username').val(),
'password':$('#password').val()
},function (data) {
if(data.res==1){
layer.msg(data.msg,function(){
location.href='{:url(\'Index/index\')}'
});
}else{
layer.msg(data.msg,function(){
});
}
})
/***************模板变量***************/
{$Think.session.username} * 需要注意的是,密码传过来后需要进行SHA1加密后对比,否则不会相等
public function loginCheck()
{
//获取前台数据
$data = Request::param();
$username = $data['username'];
$password = sha1($data['password']);
//判断是否为空
if($username==''){
return ['res' => 2, 'msg' => '请输入用户名'];
}
//查询是否有此用户名
$user = User::where('username',$username)->find();
if($user !=true){
$info = ['res'=>3, 'msg'=>'用户名不存在'];
//如果密码不匹配
}elseif($password != $user['password']){
$info = ['res'=>0, 'msg'=>'密码不正确'];
//密码正确,则传入SESSION
}else{
$info = ['res'=>1, 'msg'=>'登陆成功!'];
Session::set('username',$username);
}
return $info;
}
二.登出实现
登出很简单,就是将session删除并跳到登陆界面即可
public function loginOut()
{
//删除session
Session::delete('username');
$this->redirect('login');
}
三.防止不登录直接访问后台
* 创建一个公共控制器,继承Controller类,及其构造方法,再创建一个构造方法,只要调用方法就是触发.
* 然后在构造方法中判断Session是否存在username,如果不存在则抛出错误信息并跳到登陆界面
namespace app\admin\controller;
use think\Controller;
use think\facade\Session;
class Common extends Controller
{
public function __construct()
{
parent::__construct();
if(!Session::has('username')){
$this->error('请登陆后重试','Login/login');
}
}
} * 在不允许不登录就访问的控制器类中改成继承这个公共类(这个公共类继承了Controller类的所有方法,所以不影响操作),如Index控制器,User控制器
use app\admin\controller\Common; //引入公共控制器 class User extends Common //继承

批改老师:天蓬老师批改时间:2018-12-20 23:14:27
老师总结:登录与验证,永远是Web开发的起点, 也是一个难点, 如果我是面试官, 一个登录与验证, 差不多可以看出面试者的80%的能力和水平