login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[ZF] Zend_Auth (Opgelost)

Offline Oneday - 11/03/2011 16:06
Avatar van OnedayNieuw lid Ik heb nu een loginscriptje met Zend_Auth, maar hoe zorg ik nu dat hij onthoud dat ik ingelogged ben? Want zodra ik f5 doe ben ik weer uitgelogd.

7 antwoorden

Gesponsorde links
Offline Wim - 11/03/2011 16:31
Avatar van Wim Crew algemeen klinkt als een PHP.net: session_start probleem, heb wel geen idee in welke mate zend_auth dit zelf doet, moet je de manual eens voor checken
Offline Oneday - 11/03/2011 16:33 (laatste wijziging 11/03/2011 16:51)
Avatar van Oneday Nieuw lid
Wim schreef:
klinkt als een PHP.net: session_start probleem, heb wel geen idee in welke mate zend_auth dit zelf doet, moet je de manual eens voor checken

Met sessions zou ik 't inderdaad kunnen oplossen, maar hier is sowieso een andere manier voor binnen Zend Framework en daar ben ik naar op zoek.

Update:

Ik heb inmiddels een tut gevonden waar Zend_Session_Namespace wordt uitgelegd, heb 't ook geprobeerd maar de sessie blijft niet onthouden. Vanaf dat ik op f5 druk is deze weer weg.

Heb volgende in m'n bootstrap gezet:

  1. <?php
  2. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  3. {
  4. protected function _initPlaceholders()
  5. {
  6. Zend_Loader::loadClass('Zend_Session');
  7. Zend_Session::start();
  8. }
  9. }


Deze moet toch in mijn bootstrap? Want als ik 't in public/index.php zet krijg ik een error.
Offline lemoinet - 11/03/2011 17:57
Avatar van lemoinet PHP gevorderde wat krijg je te zien als je dit output?

  1. Zend_Auth::getInstance()->getIdentity()
Offline Oneday - 11/03/2011 18:00 (laatste wijziging 11/03/2011 18:01)
Avatar van Oneday Nieuw lid
lemoinet schreef:
wat krijg je te zien als je dit output?

[..code..]

Niets


Mijn indexController ziet er als volgt uit:

  1. public function indexAction()
  2. {
  3. /**
  4.   * We slaan de login op in de namespace Zend_Login
  5.   */
  6. $zend_login = new Zend_Session_Namespace('Zend_Login');
  7.  
  8. /**
  9.   * Procedure stap 1: is de gebruiker ingelogged?
  10.   * $zend_auth->ingelogd is een boolean | true wanneer iemand is ingelogd
  11.   */
  12. if( $zend_login->ingelogd ) {
  13.  
  14. }
  15.  
  16. /**
  17.   * Procedure stap 2: is het loginformulier verstuurd?
  18.   */
  19. if( $this->_request->isPost() ) {
  20.  
  21. //de database adapter maken
  22. Zend_Loader::loadClass('Zend_Db');
  23.  
  24. //configure the database
  25. $options = array(
  26. 'host' => 'localhost' ,
  27. 'username' => 'root' ,
  28. 'password' => '' ,
  29. 'dbname' => 'bspot'
  30. );
  31. $db = Zend_Db::factory( 'PDO_MYSQL' , $options );
  32.  
  33. //hier komt Zend_Auth gedeelte
  34. Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
  35.  
  36. /**
  37.   * Maak de Zend_Auth instatie
  38.   *
  39.   * @param $db omdat we werken met een database moet Zend_Auth kunnen werken met de database
  40.   * @param 'users' de tabel waar Zend_Auth moet kijken voor in te loggen
  41.   * @param 'account' de naam van de kolom waar de gebruikersnaam instaat
  42.   * @param 'wachtwoord' de naam van de kolom waar het wachtwoord staat.
  43.   */
  44. $auth = new Zend_Auth_Adapter_DbTable( $db , 'users' , 'username' , 'password' );
  45.  
  46. //de waarden van het formulier ophalen
  47. //alle wachtwoorden zijn MD5 ge-encryped
  48. $username = $this->_request->getPost('username');
  49. $password = md5( $this->_request->getPost('password') );
  50.  
  51. //nu kom Zend_Auth die nu gaat inloggen met de gegevens van hierboven
  52. //identity is de kolom waar de username instaat
  53. //credential is de kolom waar het wachtwoord instaat
  54. $auth->setIdentity($username)->setCredential($password);
  55. $result = $auth->authenticate();
  56.  
  57. //isValid() geeft een object terug bij succes
  58. if( $result->isValid() ) {
  59. $username = $result->getIdentity();
  60.  
  61. //schrijf de login weg in de sessie
  62. $zend_login->ingelogd = true;
  63. $zend_login->username = $username;
  64.  
  65. //ingelogd
  66.  
  67. }
  68. else {
  69. $this->_redirect('/auth/');
  70. }
  71.  
  72. } else {
  73.  
  74. $this->_redirect('/auth/');
  75.  
  76. }
  77. }
Offline lemoinet - 11/03/2011 18:02
Avatar van lemoinet PHP gevorderde hoe ziet je login controller eruit?
Offline Oneday - 11/03/2011 18:09
Avatar van Oneday Nieuw lid
lemoinet schreef:
hoe ziet je login controller eruit?

Die is leeg, daar zit in de view gewoon het loginform.
Offline lemoinet - 11/03/2011 18:16
Avatar van lemoinet PHP gevorderde je bent nog vergeten je resultaat in de storage te steken

  1. $user = $auth->getResultRowObject();
  2. Zend_Auth::getInstance()->getStorage()->write($user);


zoiets zou het moeten worden
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.221s