登陆操作总结

原创 2018-12-20 22:47:01 287
摘要:一.登陆实现    * 登陆方法,就是在验证登陆模板传过来的数据(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;
}

8.png

二.登出实现

    登出很简单,就是将session删除并跳到登陆界面即可

public function loginOut()
{
    //删除session
    Session::delete('username');
    $this->redirect('login');
}

9.png

三.防止不登录直接访问后台

    * 创建一个公共控制器,继承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            //继承

10.png





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

发布手记

热门词条