为了账号安全,请及时绑定邮箱和手机立即绑定

Yii2-usuario:扩展登录过程

Yii2-usuario:扩展登录过程

PHP
小唯快跑啊 2022-01-02 20:13:09
使用 Yii2-usuario,我想通过在用户成功登录后设置一些会话变量来扩展登录过程。我尝试通过以下方式扩展用户模型:替换中的 User 类./config/web.php:'modules' => [    'user' => [        'class' => Da\User\Module::class,        'classMap' => [            'User' => app\models\user\User::class,        ],    ],],并重载User类./models/users/User.php:namespace app\models\user;use Da\User\Model\User as BaseUser;class User extends BaseUser{    public function login(IdentityInterface $identity, $duration = 0)    {        $ok = parent::login();        myNewFeature();        return $ok;    }}如文档中所述。但是:login()当用户登录时,这个函数永远不会被执行。我怎样才能使这项工作?
查看完整描述

1 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

最好的方法是利用扩展提供的事件。如果您查看FormEvents,您会在SecurityController标题下看到以下内容


FormEvent::EVENT_BEFORE_LOGIN: 在用户登录系统之前发生

FormEvent::EVENT_AFTER_LOGIN:在用户登录系统后发生

所以你需要做的是定义一个事件并在那里添加你的代码,文档说events.php在你的config文件夹中创建一个命名的文件,然后将它加载到你的入口脚本中。


以下是为 设置事件的示例SecurityController:


<?php 

// events.php file


use Da\User\Controller\SecurityController;

use Da\User\Event\FormEvent;

use yii\base\Event;


Event::on(SecurityController::class, FormEvent::EVENT_AFTER_LOGIN, function (FormEvent $event) {

    $form = $event->getForm();


    // ... your logic here

});

然后最后一部分是在你的入口脚本中加载这个文件


<?php

defined('YII_DEBUG') or define('YII_DEBUG', true);

defined('YII_ENV') or define('YII_ENV', 'dev');


require(__DIR__ . '/../../vendor/autoload.php');

require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');

require(__DIR__ . '/../../common/config/bootstrap.php');

require(__DIR__ . '/../config/bootstrap.php');


require(__DIR__ . '/../config/events.php'); // <--- adding events here! :)


$config = yii\helpers\ArrayHelper::merge(

    require(__DIR__ . '/../../common/config/main.php'),

    require(__DIR__ . '/../../common/config/main-local.php'),

    require(__DIR__ . '/../config/main.php'),

    require(__DIR__ . '/../config/main-local.php')

);


$application = new yii\web\Application($config);

$application->run();


查看完整回答
反对 回复 2022-01-02
  • 1 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信