Authentication 使用IP地址[Zend Framework 2]登录ZfcUser

Authentication 使用IP地址[Zend Framework 2]登录ZfcUser,authentication,zend-framework2,zfcuser,Authentication,Zend Framework2,Zfcuser,我使用的是zfcuser我想用IP地址登录,而不是向用户询问密码,IP存储在DB中,用户需要输入用户名/电子邮件进行身份验证,IP通过身份验证从DB中检索。事件前我的代码是: $this->listeners[]=$sharedManager->attach('ZfcUser\Authentication\Adapter\Adapter\AdapterChain','authenticate.pre',array($this,'LoginIp') LoginIp方法是: public fun

我使用的是zfcuser我想用IP地址登录,而不是向用户询问密码,IP存储在DB中,用户需要输入用户名/电子邮件进行身份验证,IP通过身份验证从DB中检索。事件前我的代码是:

$this->listeners[]=$sharedManager->attach('ZfcUser\Authentication\Adapter\Adapter\AdapterChain','authenticate.pre',array($this,'LoginIp')

LoginIp方法是:

  public function loginIp(Event $e) {  

    $em = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');

    //Get user from DB

    $user = $em->getRepository('LcUser\Entity\User')
            ->findOneBy(array('email' => $_POST['identity']));

    //Get IP Address from Group 

    $group = $em->getRepository('LcGroup\Entity\Group')
            ->findOneBy(array('id' => $user->getGroup()));


    //Check if IP of organization and current machine is same, 
    //Set authentication with username from user and password from DB

       if($group->getIpAddresses()==$_SERVER['SERVER_ADDR']){              
             $_POST['credential']=$user->getUnhashedPassword();                  
       }
 }
问题
我正在更新$_POST['credential']值,方法是从DB中为其分配新值,但zfcuser不处理此值,而是处理通过提交登录表单得到的旧值?我需要帮助了解如何更新登录凭据,以便使用IP和用户名登录用户而不使用密码?

但是公共IP地址是唯一的,您不能使用它来唯一标识您的用户(或客户端)。如果用户在使用(例如您的办公室网络)的网络上,他们共享一个公共IP地址

使用您的解决方案,这些用户(从同一网络中请求您的网站)将共享相同的身份验证。这很可能不是你想要的

有关此主题的更多信息,请查看或


注意:MAC地址应该是唯一标识客户端(设备)的地址,但MAC地址也很容易被其他人欺骗(伪造),因此我也不建议使用该解决方案。我建议您坚持使用更传统的解决方案。

然而,公共IP地址是唯一的,您不能使用它来唯一地标识您的用户(或客户)。如果用户在使用(例如您的办公室网络)的网络上,他们共享一个公共IP地址

使用您的解决方案,这些用户(从同一网络中请求您的网站)将共享相同的身份验证。这很可能不是你想要的

有关此主题的更多信息,请查看或


注意:MAC地址应该是唯一标识客户端(设备)的地址,但MAC地址也很容易被其他人欺骗(伪造),因此我也不建议使用该解决方案。我建议采用更为传统的解决方案。

你说得对吗,但我正在处理这种情况,我要的是用户名,它属于一个特定的组,组的IP地址存储在数据库中。因此,我不是询问数据库中存储的密码,而是询问用户名和IP。Thanks@ZahoorAhmad如果用户使用相同的名称呢!?用户名/电子邮件在zfcuser中是唯一的。已经创建了具有唯一电子邮件/用户名的用户,他们只想使用其用户名使用预定义的IP登录。您说得对,但我正在处理这种情况,我要求用户名,它属于特定组,并且组的IP地址存储在DB中。因此,我不是询问数据库中存储的密码,而是询问用户名和IP。Thanks@ZahoorAhmad如果用户使用相同的名称呢!?用户名/电子邮件在zfcuser中是唯一的。已创建具有唯一电子邮件/用户名的用户,只需使用其用户名使用预定义的IP登录即可。