《deetom》项目开发历程<六> 免登陆

需求:

      用户选中10天后面登录。需每次登陆都直接抵达个人中心,为已登录状态 

思路:

      记录cookie

      处于安全考虑,首先前段表单提交前对密码进行MD5加密

  若用户选中了10天免登陆则将用户密码和加密密码存入cookie中

  注意:cookie不支持存数组。

  当用户下一次请求时,先分析有没有cookie,先分析有没有session,若有session(用户登录是会存session),则直接让用户登录。

  若没有session,检查cookie

  若发现了cookie,将用户名 密码取出来

  对密码进行二次加密,请求数据库,检查,若成功,增加session 登陆成功

  否则不成功。cookie失效了,或者cookie别改动,或者被冲突掉了。

一些代码:

前段加密部分

          $.post("/Login/login?r=" + Math.random(),{
                    username : $username,
                    password :calcMD5($password),
                    key       : "login",
                    loginone  : $loginone
                }, function(data, textStatus) {
                    if($.trim(data) != ''){
                        alert(data);
                        window.location.href="/UserCenter/info";
                    }
                });

设置cookie

        if($loginone == 'yes'){
                    //保存cookie ,免登陆需求。
                    //密码已加密
                    $key = "csince_dt_user_info";
                     //过期时间  十天
                    //这里放的密码,只是进行了前段加密,后面登陆的时候需要再次加密登陆
                  setcookie($key,$userName."-".$_POST['password'],time()+864000);
                }

下次登录检查cookie部分

 $cookie_userinfo = $_COOKIE['csince_dt_user_info'];
        if(!empty($info)){
            $this->redirect("/UserCenter/info");
        }else{
            //如果cookie 不为空 取出cookie中的账号密码
            if(!empty($cookie_userinfo)){
                $arr = explode('-',$cookie_userinfo);
                $userName = $arr[0];
                $passWord = $arr[1];
                //进行密码二次加密
                $passWord = $this->csmd5($passWord,'7rDySCWe');
                //判断用户名密码是否匹配
                $res = $model->where("username = '$userName' and password = '$passWord'")->getOne();
                if(!empty($res)){
                    $session = $this->instance('Session');
                    $session->set("index_userInfo",$res);//存session
                    $this->redirect("/UserCenter/info");
                }
            }
        }
积累知识,分享知识,学习知识。
原文地址:https://www.cnblogs.com/bin-pureLife/p/3831450.html