yii2自定义登录验证

8 篇文章 0 订阅

yii2自带了用户登录功能,修改一下就可以为我所用了,很是方便

1、修改 config\web.php  禁止自动登录

'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => false, // 禁用自动登录
        ],

2、models\User.php 增加一个方法getOneUser:
    

public static function getOneUser()
    {
       foreach (self::$users as $user) {
          return new static($user);
       }
    }

3、修改 models\LoginForm.php 加上方法 attributeLabels()

/**
     * @return array the validation rules.
     */
    public function rules()
    {
        return [
            // username and password are both required
            // [['username', 'password'], 'required'],
			['username', 'required', 'message' => '账号不能为空'],
			['password', 'required', 'message' => '密码不能为空'],
            // rememberMe must be a boolean value
            ['rememberMe', 'boolean'],
            // password is validated by validatePassword()
            ['password', 'validatePassword'],
        ];
    }
	
	public function attributeLabels()
	{
		return [
			'username' => '账号',
			'password' => '密码',
			'rememberMe' => '自动登录',
		];
	}

修改登录验证方法 public function login() 自定义验证账号和密码就在这里进行

/**
     * Logs in a user using the provided username and password.
     * @return bool whether the user is logged in successfully
     */
    public function login()
    {
        // if ($this->validate()) {
        //     return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0);
        // }
		
		// var_dump($this);
		// die();
		
		// hyx 自定义登录验证
		if($this->username == 'qq' && $this->password == 'qq')
		{
			$user = User::getOneUser();
			$user->username = 'qq';
			$user->password = 'qq';
			Yii::$app->session->set('userName', $user->username);
			Yii::$app->user->login($user, 0);
			return true;
		}
		
        return false;
    }

这样修改 登录系统后,发现显示的用户名不正确

需要修改 views\layouts\main.php

把 Yii::$app->user->identity->username 换成 Yii::$app->session->get('userName') 即可

echo Nav::widget([
        'options' => ['class' => 'navbar-nav navbar-right'],
        'items' => [
            // ['label' => 'Home', 'url' => ['/site/index']],
            // ['label' => 'About', 'url' => ['/site/about']],
            // ['label' => 'Contact', 'url' => ['/site/contact']],
            Yii::$app->user->isGuest ? (
                ['label' => 'Login', 'url' => ['/site/login']]
            ) : (
                '<li>'
                . Html::beginForm(['/site/logout'], 'post')
                . Html::submitButton(
                    // 'Logout (' . Yii::$app->user->identity->username . ')',
                    'Logout (' . Yii::$app->session->get('userName') . ')',
                    ['class' => 'btn btn-link logout']
                )
                . Html::endForm()
                . '</li>'
            )
        ],
    ]);

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

friendan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值