Alexander Makarov
11 years ago
1 changed files with 72 additions and 0 deletions
@ -0,0 +1,72 @@
|
||||
Authentication |
||||
============== |
||||
|
||||
Authentication is basically what happens when one is trying to sign in. Typically login and passwords are read from |
||||
the form and then application checks if there's such user with such password. |
||||
|
||||
In Yii all this is done semi-automatically and what's left to developer is to implement [[\yii\web\IdentityInterface]]. |
||||
Typically it is being implemented in `User` model. You can find a full featured example in |
||||
[advanced application template](installation.md). Below only interface methods are listed: |
||||
|
||||
```php |
||||
class User extends ActiveRecord implements IdentityInterface |
||||
{ |
||||
// ... |
||||
|
||||
/** |
||||
* Finds an identity by the given ID. |
||||
* |
||||
* @param string|integer $id the ID to be looked for |
||||
* @return IdentityInterface|null the identity object that matches the given ID. |
||||
*/ |
||||
public static function findIdentity($id) |
||||
{ |
||||
return static::find($id); |
||||
} |
||||
|
||||
/** |
||||
* @return int|string current user ID |
||||
*/ |
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
|
||||
/** |
||||
* @return string current user auth key |
||||
*/ |
||||
public function getAuthKey() |
||||
{ |
||||
return $this->auth_key; |
||||
} |
||||
|
||||
/** |
||||
* @param string $authKey |
||||
* @return boolean if auth key is valid for current user |
||||
*/ |
||||
public function validateAuthKey($authKey) |
||||
{ |
||||
return $this->getAuthKey() === $authKey; |
||||
} |
||||
} |
||||
``` |
||||
|
||||
First two methods are simple. `findIdentity` given ID returns model instance while `getId` returns ID itself. |
||||
`getAuthKey` and `validateAuthKey` are used to provide extra security to the "remember me" cookie. |
||||
`getAuthKey` should return a string that is unique for each user. A good idea is to save this value when user is |
||||
created using `Security::generateRandomKey()`: |
||||
|
||||
```php |
||||
public function beforeSave($insert) |
||||
{ |
||||
if (parent::beforeSave($insert)) { |
||||
if ($this->isNewRecord) { |
||||
$this->auth_key = Security::generateRandomKey(); |
||||
} |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
``` |
||||
|
||||
`validateAuthKey` just compares `$authKey` passed as parameter (got from cookie) with the value got from database. |
Loading…
Reference in new issue