Erstellen der Yii UserIdentity und was diese genau ist – Teil 2

UserIdentity

Das User Management ist eines der wichtigsten Dinge, die am sichersten programmiert werden müssen, wenn es darum geht, Benutzerzugänge zur Verfügung zu stellen. Dabei sollte man immer in Gedanken haben, dass es nicht nur friedliche Besucher auf einer Webseite gibt. Auch wenn ich von keiner kriminellen Kraft ausgehe, muss ich doch dennoch sicherstellen, dass kein unbefugter Zugriff möglich ist.

Dieser Artikel ist Teil 2 der Artikelserie über die Yii User Management und umfasst folgende Artikel:

Die Yii UserIdentity ist eine Klasse, die die Klasse CBaseUserIdentity ableitet, die wiederum das Interface IUserIdentity implementiert. Die Yii UserIdentity ist dazu da, die Identitätsinformationen eines Besuchers zu speichern. Wenn dieser sich an der Webseite anmeldet, so macht er dies in der Regel mit einem Benutzernamen und einem Passwort. Damit Authentifiziert er sich am System, so dass das System weis, dass der Besucher auf bestimmte Aktionen Zugriff haben darf. In der Yii UserIdentity werden die Authentifizierungsdaten über den gesamten Zeitraum, in dem die Authentifizierung gültig ist, gespeichert.

In der Yii UserIdentity findet auch die Authentifizierung selbst statt. Hier kann also auch noch mehr, als nur der Vergleich von Username und Passwort stattfinden. Beispielsweise wenn man manche IP-Bereiche von der Webseiten authentifizierung ausschließen möchte, kann man das hier implementieren.

Ich erstelle die Yii UserIdentity wie folgt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
  * Erstellen der Yii UserIdentity Klasse
*/

class UserIdentity extends CUserIdentity
{
  private $_id;
  # Hier findet in der Yii UserIdentity die Authentifizierung statt.
  public function authenticate()
  {
    # Je nach Datenmodell kann dies natürlich entsprechend abweichen
    $record=User::model()->findByAttributes(array('username'=>$this->username));
    if($record===null)
      $this->errorCode=self::ERROR_USERNAME_INVALID;
    else if($record->pw!==md5($this->password))
      $this->errorCode=self::ERROR_PASSWORD_INVALID;
    else
    {
      $this->_admin = $record->admin;
      $this->_id=$record->id;
      $this->errorCode=self::ERROR_NONE;
    }
    return !$this->errorCode;
  }
  // Diese Methode ist nicht unbedingt notwendig. Jedoch finde ich dass die
  // Methode getId die ID der UserIdentity zurückliefern sollte und nicht
  // den Username wie das normalerweise bei Yii ist.
  public function getId()
  {
    return $this->_id;
  }
}

3 Responses to Erstellen der Yii UserIdentity und was diese genau ist – Teil 2

  1. […] Teil 2 – Erstellen der Yii UserIdentity und was diese genau ist […]

  2. […] Teil 2 – Erstellen der Yii UserIdentity und was diese genau ist […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert