2012-03-10 2 views
5

나는 새 프로젝트의 사용자 관리 구성 요소에 대해 작업하고 있습니다. 계획은 다음과 같습니다CakePHP 2.0 계정 활성화 후 자동 로그인

  1. 사용자가 계정 데이터의 최소량 (사용자 이름, 패스, 이메일)
  2. 사용자는
  3. 사용자가 클릭하면 계정을 활성화하기 위해 활성화 링크가 포함 된 이메일을 얻을 수있는 페이지에 등록 링크 및
(등, 마지막 로그인, 안녕하세요 "사용자 이름")
  • 사용자의 시스템 로그 후 자동으로 활성화 한 후 자신의 계정 활성화 및 계정 정보가있는 대시 보드의 종류에 그를 리디렉션

    그러나 자동 로그인에는 몇 가지 문제가 있습니다. 당신이 (가) 인증 구성 요소의 사용자() 함수를 사용하여 로그인 한 사용자에 대한 정보를 얻을 할 때까지가 지금까지 작동

    <?php 
    ... 
    // set userstatus to "active" and delete meta information "activation_key" 
    // then automatically login 
    $this->User->id = $id; 
    $this->User->saveField('modified', date('Y-m-d H:i:s')); 
    $this->User->saveField('status', 1); 
    
    // $this->User->deleteActivationKey .... 
    
    $this->Auth->login($this->User->read()); 
    $this->Session->setFlash(__('Successfully activated account. You are now logged in.')); 
    
    $this->User->saveField('last_login', date('Y-m-d H:i:s')); 
    
    $this->redirect(array('controller' => 'pages')); 
    ... 
    

    이 내가 사용하는 코드의 일부입니다. 우리는 AppController-> beforeRender이를 사용하고

    넓은 사용자 정보 응용 프로그램이합니다 :

    $this->set('auth', $this->Auth->user()); 
    

    을하지만 자동 로그인 활동 후, 나는 정의되지 않은 인덱스 통지를 받고 있어요. (예 :보기에서 $ auth [ 'id']에 액세스하여). print_r()은 현재 사용자의 사용자 이름과 해시 된 암호 만 보여줍니다. 수동으로 로그인하면 모든 것이 정상적으로 작동합니다. 그것은 계정 활성화 후 자동 로그인과 무언가가 있어야합니다.

    세션에 문제가있는 것 같습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

  • 답변

    11

    많은 변형을 테스트 한 후 해결책을 찾았습니다. , 나는 이미이 방법을 시도하고 작동하지 않았다 생각하는 이유

    $user = $this->User->findById($id); 
    $user = $user['User']; 
    $this->Auth->login($user); 
    

    알고하지 마십시오

    함께 작동합니다.

    +2

    다음을 사용할 수 있습니다 : $ this-> Auth-> login ($ user [ 'User']); –

    1

    시도해 보셨습니까? (CakePHP 2.x)

    public function signup() { 
        if (!empty($this->request->data)) { 
        // Registration stuff 
    
        // Auto login 
        if ($this->Auth->login()) { 
         $this->redirect('/'); 
        } 
        } 
    } 
    

    간단합니다!

    관련 문제