0

我目前正在使用 Zend Framework 和 Doctrine 2 开发一个项目,我对这两个工具都非常满意,但我想知道如何使用这个特殊的 User 对象,它共享数据库数据、会话数据(授权、参数、acl 等)

我经常看到这种实现:

if (User::isConnected())

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

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

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

类似的东西怎么样:

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

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

这同样适用于 AuthorizationService ,方法如下:

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

您对这种实施方式有任何反馈吗?和/或任何例子?

你觉得呢?你有没有什么想法?

谢谢你。

4

1 回答 1

0

您考虑某种服务(与您的用户实体分开)来管理这些东西是正确的。实体不应该知道数据访问等。

看看Zend_Auth。您需要创建 Zend_Auth_Adapter 来使用 Doctrine2。用谷歌搜索一下这个例子,这可能是有启发性的。Zend_Auth 很好也很简单,一旦你验证了你的用户,它就可以很好地与Zend_Acl一起管理授权。

于 2011-05-14T19:32:41.420 回答