Autenticazione Zend framework 2 - memorizza solo l'ID utente in sessione

0

Ho appena creato la mia prima app utilizzando Zend_Authenticate. Secondo alcuni tutorial che ho letto, memorizzano la colonna "email" dell'utente. È raccomandato? Ho letto per memorizzare solo l'ID, quindi su ogni richiesta recuperare l'utente per ID. In questo modo, solo l'ID viene memorizzato nella sessione. È consigliato anche con Zend?

Comunque qui è la mia gestione del login utente, apprezzerei qualsiasi feedback. Fondamentalmente sto autenticando. Se ciò è passato, memorizzo l'ID nella memoria di autenticazione e un messaggio flash personalizzato. Lo script quindi reindirizza alla homepage (in cui il modulo di accesso verrà sostituito con un pannello utente, ad esempio "Bentornato John", e verrà visualizzato il mio messaggio flash.

Di seguito è riportato il mio metodo loginAction:

public function loginAction()
{
  $form = new LoginForm();

  $form->get('submit')->setValue('Login');

  $request = $this->getRequest();

  if ($request->isPost()) {

      // check the users credentials and authenticate
      $this->getAuthService()
        ->getAdapter()
        ->setIdentity($request->getPost('email'))
        ->setCredential($request->getPost('password'));

      $result = $this->getAuthService()->authenticate();

      if ($result->isValid()) {

        // set the user id in storage
        $resultRow = $this->getAuthService()->getAdapter()->getResultRowObject();
        $this->getAuthService()->getStorage()->write($resultRow->id);

        // set flash messenger
        $this->flashMessenger()->addMessage('You are now logged in');

        // redirect to the home page
        return $this->redirect()->toUrl('/');
      }

  }

    return new ViewModel(array(
      'form' => $form,
    ));
  }

}
    
posta Martyn 18.07.2014 - 05:10
fonte

1 risposta

3

Qui non c'è alcuna regola "d'oro", solo buon senso:

  1. la memorizzazione di id utente è un minimo. Se funziona per te (vedi sotto) - ottimo, non c'è bisogno di complicare le cose.
  2. memorizzare informazioni aggiuntive all'interno della sessione non è altro che denormalizzazione : scambi la coerenza automatica per la velocità. se memorizzi abbastanza informazioni in sessione (nome visualizzato, email, ...) per la generazione di alcune pagine non avrai bisogno di interrogare l'intero oggetto utente in una query DB separata (velocità!) ma dovrai essere sicuro per sincronizzare i campi di profilo aggiornati tra DB e la sessione (non più consistenza automatica)

quindi, se il vantaggio della velocità è importante per te, dagli una possibilità. in caso contrario, salva solo ID utente

    
risposta data 10.08.2014 - 18:51
fonte

Leggi altre domande sui tag