0

我正在尝试使用 yii2-adldap 模块登录,但出现“密码错误”。密码正确。这是我的代码:

  public function validatePassword($attribute, $params)
{

    if (!$this->hasErrors()) {
        $user = $this->getUser();
        if (!$user) {
            $this->addError('username', 'Incorrect username.');
        } else {
            $userprincipalname = $this->_user->queryLdapUserObject()->getAttribute('userprincipalname');

            if(! Yii::$app->ad->auth()->attempt($userprincipalname[0], $this->password)){

                $this->addError('password', 'Incorrect password.');
            }
        }
    }
}

我的 getUser 如下:

 public function getUser()
{
    if ($this->_user === false) {
        $this->_user = \Edvlerblog\Adldap2\model\UserDbLdap::findByUsername($this->username);
    }

    return $this->_user;
}
4

1 回答 1

0

我应该看到这个。在使用不同的 Active Directory 进行测试后,我发现问题与我的 AD 设置方式有关。将我的代码还原为此并且它有效(对于某些用户):

   public function validatePassword($attribute, $params)
{


    if (!$this->hasErrors()) {
        $user = $this->getUser();

        if (!$user || !$user->validatePassword($this->password)) {
            $this->addError($attribute, 'Incorrect username or password.');
        }
    }

}

所以我需要和我的系统管理员一起工作。谢谢你。

于 2018-09-21T06:39:02.420 回答