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:
- Teil 1 – Eigenes YII User Management
- Teil 2 – Erstellen der Yii UserIdentity und was diese genau ist
- Teil 3 – Erweiterungen und verbesserungen für die Yii User Identity
- Teil 4 – Rollenbasierte Rechte, Business Regeln und Tätigkeiten
- Teil 5 – Der Yii AuthManager für das User Management in Yii
- Teil 6 – Datenbankstruktur und Yii CDbAuthManager
- Teil 7 – Erstellen der Rollen, Tätigkeiten und Business Regeln
- Teil 8 – Eine Verwaltung für die Rollen und Business Regeln
- Teil 9 – Eine Verwaltung für die Tätigkeiten
- Teil 10 – Abschluss des Themas und Fazit
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; } } |
Pingback: Ein eigenes Yii User Management
Pingback: Yii RBAC – Rollenbasierte Rechte und mehr – Teil 4 | Web-Entwicklung live
Pingback: Erweiterungen und verbesserungen für die Yii User Identity class – Teil 3 | Web-Entwicklung live