Zend framework2 表记录访问-Zend Framework 2

Zend framework2 表记录访问-Zend Framework 2,zend-framework2,Zend Framework2,我有一个带有Zend\Authentication的登录系统,工作正常。我在存储器中保存了用户标识,因此我还知道登录用户的id 使用TableGateway访问数据库表 我试图找到一种正确的方法,让用户只访问他们的记录(例如,在customers表中只访问标有该用户id的客户记录),当然,也允许他们只编辑自己的记录 是的,我可以读取表类中的标识并按用户id过滤记录,或者更好地从控制器中按用户id调用数据检索函数,而不是让表类与用户标识相关 我感兴趣的是“创建只返回登录用户指定数据的模块的正确方法

我有一个带有Zend\Authentication的登录系统,工作正常。我在存储器中保存了用户标识,因此我还知道登录用户的id

使用TableGateway访问数据库表

我试图找到一种正确的方法,让用户只访问他们的记录(例如,在customers表中只访问标有该用户id的客户记录),当然,也允许他们只编辑自己的记录

是的,我可以读取表类中的标识并按用户id过滤记录,或者更好地从控制器中按用户id调用数据检索函数,而不是让表类与用户标识相关

我感兴趣的是“创建只返回登录用户指定数据的模块的正确方法是什么?”。我是ZF2的新手,我不想学习错误的方法,但是如果有的话,我想学习已经存在并被证明有效的方法


感谢阅读。

zend身份验证服务仅对您的数据库验证登录,但在其他控制器中针对db调用返回的数据时,不要在意

因此,在这种情况下,您有责任处理返回的数据。像这样的

$assignedUserdata = $database->findBy(array('id' => $this->identity()->getId()));

老问题,但无论如何我会给你和其他人我的解决方案。我也有同样的问题,我不喜欢开发人员每次访问数据库时都考虑用户上下文

我所做的是扩展我的存储库(=从抽象层到数据库查询),使其具有用户意识。因此,我的
OrderRepository实现了UserAwareRepository
。每个UserAwareRepository都希望在其构造函数中注入一个有效的用户对象,我使用工厂来实现这个构造函数

现在UserAwareRepository所做的是将
WHERE user=$user->getId()
附加到每个查询


不容易出错。

我认为您可以创建一个方法来为您进行检查。例如,如果用户id 25可以访问和编辑id为100的数据,则进行检查,如果用户id 25访问的是正确的id,则返回true;如果用户id 25访问的是另一个id,则返回false,然后重定向他。我很抱歉,我没有意识到您发送了唯一可能的答案。“我从那时起就得到了这个结果,并且已经知道这种方法是唯一的方法,并且用这种想法建立了许多项目,但从未看到过你的答案,@ins0。”。即使是迟到也要接受,谢谢!