tp5 프레임 워 크 는 쿠키 암호 화 알고리즘 을 사용 하여 로그 인 기능 예시

본 고 는 tp5 프레임 워 크 가 쿠키 암호 화 알고리즘 을 사용 하여 로그 인 기능 을 실현 하 는 것 을 실례 로 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
우선,우 리 는 왜 쿠키 를 암호 화해 야 합 니까?
쿠키 를 암호 화 하려 는 이 유 는 쿠키 가 클 라 이언 트 에 저 장 된 것 이 라 고 생각 하기 때문에 기술 을 조금 아 는 사람 은 쿠키 의 저장 위 치 를 찾 을 수 있 습 니 다.만약 에 우리 가 쿠키 를 저장 할 때 암호 화 되 지 않 고 명문 으로 저장 하면 우리 의 사용자 이름과 비밀번호 가 완전히 드 러 납 니 다.이것 은 매우 큰 안전 위험 이 므 로 반드시 쿠키 를 암호 화해 야 합 니 다.
그 다음 에 저 희 는 쿠키 를 암호 화 하 든 저희 가 사용 할 때 암호 화 된 쿠키 를 복호화 하고 정확 한 사용자 이름과 비밀 번 호 를 받 아야 자동 으로 로그 인 하 는 기능 을 고려 해 야 합 니 다.다음은 저희 의 암호 화 방안 을 살 펴 보 겠 습 니 다.
1:설정 파일 config 에 추가

'encryption_key'     =>'d441d33a65d31dbf0a8016a85c71a5b3',


2:common 파일 에 추가

//type 0:   1:  
function encryption($value,$type=0){
  $key=config('encryption_key');
  if($type == 0){//  
   return str_replace('=', '', base64_encode($value ^ $key));
  }else{
   $value=base64_decode($value);
   return $value ^ $key;
  }
}

3:모델 에서 코드 암호 화

 public function login($data,$type=0){
    $userData=array();
    $userData['username']=trim($data['username']);
    $userData['password']=md5($data['password']);
    //                
    $users=db('user')->where(array('username'=>$userData['username']))->whereOr(array('email'=>$userData['username']))->whereOr(array('mobile_phone'=>$userData['username']))->find();
    // dump($users); die;
    if($users){
      if($users['password'] == $userData['password']){
        session('uid',$users['id']);
        session('username',$users['username']);
        //          
        $points=$users['points'];
        $memberLevel=db('member_level')->where('bom_point','<=',$points)->where('top_point','>=',$points)->find();
        session('level_id',$memberLevel['id']);//  id
        session('level_rate',$memberLevel['rate']);//     
        //  cookie
        if(isset($data['remember'])){
          $aMonth=30*24*60*60;
          $username=encryption($users['username'],0);
          $password=encryption($data['password'],0);
          cookie('username', $username, $aMonth, '/');
          cookie('password', $password, $aMonth, '/');
        }
        $arr=[
          'error'=>0,
          'message'=>"",
        ];
        if($type == 1){
          return $arr;
        }else{
          return json($arr);
        }
      }else{
        $arr=[
        'error'=>1,
        'message'=>"<i class='iconfont icon-minus-sign'></i>         ",
        'url'=>'',
        ];
        if($type == 1){
          return $arr;
        }else{
          return json($arr);
        }
      }
    }else{
      $arr=[
      'error'=>1,
      'message'=>"<i class='iconfont icon-minus-sign'></i>         ",
      'url'=>'',
      ];
      if($type == 1){
        return $arr;
      }else{
        return json($arr);
      }
    }
  }

4:컨트롤 러 에서 코드 복호화

 public function checkLogin(){
    $uid=session('uid');
    if($uid){
      $arr['error']=0;
      $arr['uid']=$uid;
      $arr['username']=session('username');
      return json($arr);
    }else{
      if(cookie('username') && cookie('password')){
        $data['username']=encryption(cookie('username'),1);
        $data['password']=encryption(cookie('password'),1);
        $loginRes=model('user')->login($data,1);
        if($loginRes['error'] == 0){
          $arr['error']=0;
          $arr['uid']=$uid;
          $arr['username']=session('username');
          return json($arr);
        }
      }
      $arr=array();
      $arr['error']=1;
      return json($arr);
    }
  }

thinkpHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 는 ThinkPHP 프레임 워 크 를 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기