我目前正在与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)
您对此类实施有任何反馈意见吗?和/或任何例子?
你有什么想法?
谢谢。
答案 0 :(得分:0)
您可以考虑与用户实体分开的某种服务来管理这些内容。实体不应该知道数据访问等。
看看Zend_Auth。您将需要创建Zend_Auth_Adapter以使用Doctrine2。一个小小的谷歌搜索出现this example,这可能是有益的。 Zend_Auth非常简单,只要您对用户进行身份验证,就可以很好地使用Zend_Acl来管理授权。