2012-03-10 25 views
5

Sadece yeni projemizin kullanıcı yönetimi bileşeni üzerinde çalışıyorum. plandır:CakePHP 2.0 Hesap Etkinleştirmesinden Sonra Otomatik Oturum Açma

  1. Kullanıcı hesabı verileri az miktarda (kullanıcı adı, pas, e-posta)
  2. Kullanıcı
  3. Kullanıcı tıkladığında hesabını etkinleştirmek için bir etkinleştirme bağlantısını içeren bir e-posta alır Sayfadaki kaydeder bağlantı ve
(vb, son giriş, selam "kullanıcı adı")
  • kullanıcı sistem günlükleri sonra otomatik aktivasyon sonrasında yaptığı hesap aktive ve hesap bilgileri içeren bir pano tür onu yönlendirir

    Ancak, otomatik giriş ile ilgili bazı sorunlar var. Eğer Kimlik Doğrulama Bileşeni kullanıcı() fonksiyonu ile kullanıcı giriş yapmış hakkında bilgi almak istiyorum kadar bu, şimdiye kadar çalışır

    <?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')); 
    ... 
    

    : Bu i kullanmak kod parçasıdır. Biz, AppController-> beforeRender bu kullandığınız

    geniş kullanıcı bilgileri uygulama alanına sahip:

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

    ama bu oto giriş eyleminden sonra, ben tanımsız endeks bildirimleri alıyorum. (ör. görünümde $ auth ['id'] 'ye erişerek). print_r() sadece geçerli kullanıcının sadece kullanıcı adını ve hashed şifresini gösterir. El ile giriş yaparsanız, her şey yolunda çalışır. Hesap aktivasyonundan sonra otomatik giriş ile bir şey olmalı.

    Oturumda bir sorun mu var? Neyi yanlış yapıyorum?

  • cevap

    11

    Birçok varyasyonu test ettikten sonra bir çözüm bulundu. , I zaten bu yolu denedim ve işe yaramadı düşünmemin sebebi

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

    Bilmiyor:

    ile şimdi çalışır.

    +2

    Sadece şunu kullanabilirsiniz: $ this-> Auth-> login ($ user ['User']); –

    1

    Bunu denediniz mi? (CakePHP 2.x)

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

    Bu kadar basit!

    İlgili konular