Как использовать event_after_login в yii2?

Пользователь

от jaylen.trantow , в категории: PHP , 2 года назад

Как использовать event_after_login в yii2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ally , 2 года назад

@jaylen.trantow 

В Yii2, вы можете использовать событие afterLogin для выполнения действий после успешной аутентификации пользователя. Вы можете задать это событие в классе User:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
use yiiaseEvent;

class User extends ActiveRecord implements IdentityInterface
{
    // ...

    public function init()
    {
        parent::init();
        Event::on(IdentityInterface::class, IdentityInterface::EVENT_AFTER_LOGIN, [$this, 'afterLogin']);
    }

    public function afterLogin($event)
    {
        // ваш код здесь
        // например, обновление времени последнего входа
        $this->updateAttributes(['last_login_at' => time()]);
    }

    // ...
}


Вы можете реализовать это событие в любом месте вашего приложения, который должен быть выполнен после успешной аутентификации.

Пользователь

от jedidiah.brown , год назад

@jaylen.trantow 

Чтобы использовать событие afterLogin в Yii2, вам необходимо выполнить следующие шаги:

  1. Откройте файл с классом User, который реализует интерфейс IdentityInterface (обычно это модель User или класс, унаследованный от модели User):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use yiiaseEvent;

class User extends yiidbActiveRecord implements yiiwebIdentityInterface
{
    // ваш код здесь
    
    public function init()
    {
        parent::init();
        Event::on(IdentityInterface::class, IdentityInterface::EVENT_AFTER_LOGIN, [$this, 'afterLogin']);
    }
    
    public function afterLogin()
    {
        // ваш код здесь
        // выполните действия, которые должны произойти после успешного входа (аутентификации) пользователя
        // например, обновите дату последней аутентификации
        $this->last_login_at = date('Y-m-d H:i:s');
        $this->save(false);
    }
    
    // ваш код здесь
    
}


  1. Создайте и зарегистрируйте обработчик события afterLogin в методе init(). В этом обработчике вы можете выполнить любые действия после успешной аутентификации пользователя:
1
2
3
4
5
public function init()
{
    parent::init();
    Event::on(IdentityInterface::class, IdentityInterface::EVENT_AFTER_LOGIN, [$this, 'afterLogin']);
}


  1. В методе afterLogin() вы можете выполнить все дополнительные действия, которые вам необходимо после успешной аутентификации пользователя:
1
2
3
4
5
6
7
8
public function afterLogin()
{
    // ваш код здесь
    // выполните действия, которые должны произойти после успешного входа (аутентификации) пользователя
    // например, обновите дату последней аутентификации
    $this->last_login_at = date('Y-m-d H:i:s');
    $this->save(false);
}


  1. Обновите все ваши экземпляры класса User, чтобы они использовали этот новый класс, который реализует событие afterLogin:
1
use commonmodelsUser;


Теперь, после успешной аутентификации пользователя, будет вызван обработчик события afterLogin, который выполнит все необходимые действия.