您如何使用用户实体及其连接状态?

时间:2011-05-13 18:51:06

标签: zend-framework doctrine-orm service-layer

我目前正在与Zend Framework& Doctrine 2,我对这两个工具都很满意,但我想知道如何使用这个特殊的User对象,它共享数据库数据,会话数据(授权,参数,acl等)。

我经常看到这种实现:

if (User::isConnected())

对我来说问题是我的User类是Doctrine使用的实体,这不是问题,但如果我的用户有一些复杂的角色和/或特权,它可能会添加一些业务逻辑。

顺便说一句,我不知道为什么(只是一种感觉,也许是错误的)但它看起来不是一个好主意,我很确定它有设计限制。

目前我的想法是使用UserService,我已经尝试将这个图层用于我的其他实体,它看起来非常有趣。

如下:

$service = new UserService($entityManager);
if ($service->isUserConnected($user)) 

它可以让我使用另一项服务,例如IdentificationService,它可以将“用户”(或任何其他可能被授权的“资源”)存储到会话中并检查授权。

同样适用于AuthorizationService的方法如下:

$service->isAuthorized($user, $resource, $action)

您对此类实施有任何反馈意见吗?和/或任何例子?

你有什么想法?

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以考虑与用户实体分开的某种服务来管理这些内容。实体不应该知道数据访问等。

看看Zend_Auth。您将需要创建Zend_Auth_Adapter以使用Doctrine2。一个小小的谷歌搜索出现this example,这可能是有益的。 Zend_Auth非常简单,只要您对用户进行身份验证,就可以很好地使用Zend_Acl来管理授权。