Meddelande

Minska
No announcement yet.

Blogga med Zend Framework - Del 9: Zend_Auth

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Blogga med Zend Framework - Del 9: Zend_Auth

    Zend_Auth är en modul för att identifiera en användare och säkerställa att användaren är den han/hon utsäger sig för att vara. Zend_Auth innehåller flera "adaptrar" som möjliggör autentisering mot olika källor, t.ex:

    • databas
    • LDAP
    • OpenId
    • och fler…

    Vi har valt att använda databasen som källa och guiden kommer att förklara Zend_Auth ur databasens synvinkel. Mer om Zend_Auth finns att läsa på sidan http://framework.zend.com/manual/en/zend.auth.html.

    När vi använder en databas som källa måste vi ange namnet på användartabellen samt fälten för användarnamnet och lösenordet:

    PHP-kod:
    $adapter Zend_Db_Table::getDefaultAdapter();

    $authAdapter = new Zend_Auth_Adapter_DbTable($adapter);
    $authAdapter->setTableName('users');
    $authAdapter->setIdentityColumn('username');
    $authAdapter->setCredentialColumn('password');

    Sedan måste vi ge adaptern användarnamnet och lösenordet från formulärfältet:
    // notera att $_POST används för exemplets skull
    $authAdapter->setIdentity($_POST['username]);
    $authAdapter->setCredential($_POST['
    password]);

    Nästa steg blir själva autentiseringen:
    $auth Zend_Auth::getInstance();
    $result $auth->authenticate($authAdapter);

    if(
    $result->isValid() )
    {
        
    $data $authAdapter->getResultRowObject(null'password'); // vi vill inte lagra lösenordet
        
    $auth->getStorage()->write($data);
        
        echo 
    "KTHXBYE";
    }
    else
    {
        echo 
    "FAIL";
    }    

    För att seom användaren är inloggad:
    // i princip samma kod finns att hitta i vår view helper Zend_View_Helper_LoggedIn
    $auth Zend_Auth::getInstance(); 

    if(
    $auth->hasIdentity() )
    {
        
    $username $auth->getStorage()->read()->username;
        
        echo 
    "Welcome $username";

    Notera att vår blogg inte hanterar lösenord på ett korrekt och säkert sätt. Lösenordet lagras som klartext i databasen. Lösenordet borde hashas och saltas men det får bli en hemläxa!

    Autentisering av användaren skall även göras vid varje HTTP-förfrågan och inte bara då vi vill visa alternativ text i vyn. Mer om hur detta görs får ni veta när vi behandlar Zend_Acl.
    Min blogg | Mina böcker
Working...
X