tangniyuqi

tangniyuqi

呵呵

  • 财富值

    255

  • 威望值

    0

  • 总积分

    365

个人信息

  • 2018-03-12 已签到
    连续签到1天,获得了5个金钱
    2018-03-12 14:12
  • 2018-02-28 已签到
    连续签到1天,获得了5个金钱
    2018-02-28 13:29
  • 2017-12-22 已签到
    连续签到1天,获得了5个金钱
    2017-12-22 14:24
  • 我是在配置文件main.php的user组件添加登录事件行为:

    'user' => [
        'identityClass' => 'frontend\models\User',
        'identityCookie' => ['name' => '_identityfrontend', 'httpOnly' => true],
        'enableAutoLogin' => true,
        'loginUrl' => ['user/auth/signin'],
        'idParam' => '_frontend',
        'on beforeLogin' => function($event) {
    
        },
        'as afterLogin' => 'frontend\behaviors\AfterLoginBehavior',
    ],
    

    AfterLoginBehavior.php 里面是这样的:

    namespace frontend\behaviors;
    
    use Yii;
    use yii\web\User;
    use frontend\models\LoginLog;
    
    class AfterLoginBehavior extends \yii\base\Behavior
    {
        /**
         * @inheritdoc
         */
        public $attribute = 'logged_at';
    
        public $coin = 10;
    
        /**
         * @inheritdoc
         */
        public function events()
        {
            return [
                User::EVENT_AFTER_LOGIN => 'afterLogin',
            ];
        }
    
        /**
         * @inheritdoc
         */
        public function afterLogin($event)
        {
            //if ($model = $event->identity->userInfo) {
            if ($model = $event->identity) {
                $model->login_count += 1;
                $model->prev_login_time = $model->last_login_time;
                $model->prev_login_ip = $model->last_login_ip;
                $model->last_login_time = time();
                $model->last_login_ip = Yii::$app->request->userIP;
    
               /* if (!Yii::$app->session->isActive) {
                    Yii::$app->session->open();
                }
    
                $model->session_id = Yii::$app->session->id;
                Yii::$app->session->close();*/
    
                if ($model->save()) {
                    $_model = new LoginLog();
    
                    //每天登录赠送1次金币/积分
                    $today = date('Ymd');
                    $prevDay = date('Ymd', $model->prev_login_time);
    
                    if ($today > $prevDay) {
                        $_model->coin = $this->coin;
                    }
    
                    $_model->save(false);
    
                    return true;
                }
            }
    
            return false;
        }
    }
    
    2017-12-20 21:03查看
  • 回复了 的回答

    先给$isGuest一个定义试试,public $isGuest;

    Yii::$app->user->isGuest 这个不是user组件自带的属性吗 怎么还需要定义呢

    2017-12-20 20:37查看
  • 没有大神知道原因吗

    2017-12-19 18:43查看
  • 2017-12-19 已签到
    连续签到1天,获得了5个金钱
    2017-12-19 18:42
  • 回复了 的回答

    有时出现?可以说清楚些吗 还有错误代码指向的地方确定是你截图的这段?

    应该叫每次登录cookie过期后出现,代码是这个位置 根据yiidebug查看到的

    2017-12-17 18:46查看
  • 回复了 的回答

    d对方答复

    什么呢 兄台?

    2017-12-15 18:12查看

见习主管

等级规则
365/50073% Complete

资料完整度

50/10050% Complete

用户活跃度

0/1000% Complete

Ta的关注

5

Ta的粉丝

3

Ta的访客

16