首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有IP地址的ZfcUser登录[ 2]

带有IP地址的ZfcUser登录[ 2]
EN

Stack Overflow用户
提问于 2016-05-02 17:18:28
回答 1查看 235关注 0票数 1

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

$this->listeners[] = $sharedManager->attach('ZfcUser\Authentication\Adapter\AdapterChain','authenticate.pre',数组($this,‘LoginIp’);

LoginIp方法是:

代码语言:javascript
复制
  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的‘凭证’值,从DB分配给它新的值,但是zfcuser没有处理这个问题,而是处理通过提交登录表单而来的旧值?我需要帮助弄清楚如何更新登录凭证,以便使用IP和用户名登录用户和没有密码?

EN

回答 1

Stack Overflow用户

发布于 2016-05-03 12:01:18

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

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

有关此主题的更多信息,请查看这里这里Google上的其他页面

注意: MAC地址应该是唯一标识客户端(设备)的,但是http://www.howtogeek.com/228286/how-is-the-uniqueness-of-mac-addresses-enforced/和MAC地址也很容易被其他人欺骗(伪造),所以我也不建议使用该解决方案。我建议坚持一种更传统的解决办法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36987989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档