你好我正在尝试用一个用户名创建一个登录密码几个角色和一个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());
}
}
}
答案 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();
}
}