【问题标题】:How do you work with User entity and its connection status?您如何处理用户实体及其连接状态?
【发布时间】:2026-01-15 02:55:01
【问题描述】:

我目前正在使用 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)

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

你的想法是什么?

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    看看Zend_Auth。您需要创建 Zend_Auth_Adapter 来使用 Doctrine2。有点谷歌搜索出现了this example,这可能是有启发性的。 Zend_Auth 既好又简单,一旦您对用户进行了身份验证,就可以很好地与 Zend_Acl 管理授权的东西一起使用。

    【讨论】:

      最近更新 更多