Yii2 Secure RememberMe
Secure RememberMe - ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Yii2, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± RememberMe-Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠΎΠΊΠ΅Π½Ρ Π² Cookie., (*1)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Composer:, (*2)
``` bash
$ composer require "iiifx-production/yii2-secure-remember-me", (*3)
## ΠΠΈΠ³ΡΠ°ΡΠΈΠΈ
ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
``` bash
$ php yii migrate --migrationPath=@vendor/iiifx-production/yii2-secure-remember-me/source/migrations
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ°
ΠΡΠΎΠΏΠΈΡΠ°ΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ config/main.php:, (*4)
``` php
'bootstrap' => [, (*5)
/* ... */
'rememberMe', # ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ Π·Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
],
'components' => [
'rememberMe' => [ # ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
'class' => 'iiifx\yii2\SecureRememberMe\components\Manager',
# ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
'cookieKey' => 'remember-me', # ΠΠΌΡ Cookie ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°
'lifetime' => 2592000, # ΠΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΡΠΎΠΊΠ΅Π½Π°, Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
'userClass' => 'common\models\User', # ΠΠ»Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ
],
/* ... */
],
## ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
### ΠΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΊ **[Yii2 Advanced Template](https://github.com/yiisoft/yii2-app-advanced)**.
ΠΠ½ΠΎΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π»ΠΎΠ³ΠΈΠΊΡ Π²Ρ
ΠΎΠ΄Π°([LoginForm::login()](https://github.com/yiisoft/yii2-app-advanced/blob/master/common/models/LoginForm.php#L56)):
``` php
/**
* Logs in a user using the provided username and password.
*
* @return boolean whether the user is logged in successfully
*/
public function login ()
{
if ( $this->validate() ) {
if ( Yii::$app->user->login( $this->getUser() ) ) {
# ΠΡΠ»ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ RememberMe ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ
if ( $this->rememberMe ) {
/** @var \iiifx\yii2\SecureRememberMe\components\Manager $rememberMe */
$rememberMe = Yii::$app->rememberMe;
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
$rememberMe->create( $this->_user->id );
}
return TRUE;
}
}
return FALSE;
}
Π Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Π° ΠΏΡΠΈ Π²ΡΡ
ΠΎΠ΄Π΅(SiteController::actionLogout()):, (*6)
``` php
/**
* Logs out the current user.
*
* @return mixed
*/
public function actionLogout()
{
Yii::$app->user->logout();, (*7)
/** @var \iiifx\yii2\SecureRememberMe\components\Manager $rememberMe */
$rememberMe = Yii::$app->rememberMe;
$rememberMe->delete();
return $this->goHome();
}
```, (*8)
ΠΡΠΎΠ²Π΅ΡΠΊΠ°, Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΎΠΊΠ΅Π½Ρ ΠΈ Π΅Π³ΠΎ ΡΠ΅Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ., (*9)
ΠΡΠ΅. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π³ΠΎΡΠΎΠ² ΠΊ ΡΠ°Π±ΠΎΡΠ΅., (*10)
Π’Π΅ΡΡΡ
@TODO, (*11)
ΠΠΈΡΠ΅Π½Π·ΠΈΡ
, (*12)