Yii2基于ip的登录

时间:2016-04-06 21:15:04

标签: php yii2

你好我正在尝试用一个用户名创建一个登录密码几个角色和一个ip验证,当用户没有指定的ip他无法登录时,我将我的ip保存为用户的varchar表和即时通讯尝试将表上的ip与尝试登录的用户之一进行比较,但是当我登录时它返回给我这个ip :: 1这是来自localhost的ipv6,因为我已阅读并且在我的数据库中我有127.0.0.1(我试过在db上使用:: 1但是没有成功)我的问题是: 我该怎么做才能得到正确的答复?这是我的代码

    public function validateIp($ip) {
    if($this->ip == Yii::$app->request->userIp)
    {
       return $this->ip == $ip;                   
    }
        else
        {
            $this->addError($ip, 'La IP no esta habilitada para este usuario');
        }

}

在这里我执行登录

   public function login()  
   {
      if ($this->validateIp(Yii::$app->request->userIp)) 
      {
         if ($this->validate()) 
         {
           return Yii::$app->user->login($this->getUser());
         }
      }
   }

1 个答案:

答案 0 :(得分:1)

重写代码后,我终于成功了

//getting user ip
function conseguirIpUser()  
{  
    $ip = Yii::$app->request->userIp;
    return $ip;  
}  
    //Validate ip
    public function validarIp() {

    $ipUsuario= $this->getUser();

    if($this->conseguirIpUser() == $ipUsuario->ip){
        return true;
    }

}

和登录电话

    public function login()
{       
    #Si los datos son validos se realiza el login y se da un mensaje de bienvenida
    if ($this->validarIp()) {
       if ($this->validate()) {
           Yii::$app->session->setFlash('success', 'Bienvenido/a!');
           return Yii::$app->user->login($this->getUser());
       }
    }
    #en caso que la ip no sea valida para este usuario se regresara al index y se mostrara un mensaje de error

    if (!$this->validarIp()) {
        Yii::$app->session->setFlash('error', 'Usted no esta autorizado para inicar sesión en este equipo');
        return $this->refresh();
    }
}