【问题标题】:Yii CUserIdentity vs a User ModelYii CUserIdentity 与用户模型
【发布时间】:2011-09-18 01:30:46
【问题描述】:

我的 Yii 项目中至少有一个模型需要引用特定的用户 ID。在我的模型 SQL 中,我有类似 CONSTRAINT FOREIGN KEY (user_id) REFERENCES User(id) 的内容。当我遇到 CUserIdentity 的文档时,我打算继续创建一个用户模型。我不得不承认我很困惑。 CUserIdentity 是用户还是与特定用户案例相关联的状态?我想尽可能多地使用 Yii 的内置功能,因为据我所知,它们处理了很多与安全相关的问题,而且我知道存在一些模块,如 srbac 处理用户身份验证和注册管理。请指导我正确的方向。 (还有一个问题:模型和组件之间的关系是什么?)

【问题讨论】:

    标签: php oop yii yii-components yii-inheritance


    【解决方案1】:

    首先,请继续创建一个User 模型,您将需要它。

    除此之外:CUserIdentity 代表“用户是谁”的概念,而 User 模型代表“关于我的应用程序用户的信息”。 CUserIdentity 适用于存在多种用户(即访客)的所有情况,而 User 模型仅适用于您自己存储有关用户的信息时。诚然,在大多数情况下,两者都适用,这就是造成混乱的原因。

    通常,两者的关系是CUserIdentity,为了回答“用户是谁”、“用户是否允许访问该资源”等问题,从User模型中查询数据库来获取回答这些问题所需的信息。这两个概念之间的关系也是 Yii 权威指南中的documented。例如之后对用户进行身份验证时,它将通过其自己的属性(您必须定义)公开User 模型上的部分或全部信息。

    举一个没有User 模型的场景示例,请考虑一个允许您使用LDAP 用户帐户登录的网站。当调用CUserIdentity::authenticate 方法时,组件将针对 LDAP 服务器对凭据进行身份验证,并且在成功身份验证后将再次获取任何其他相关信息并通过其自己的属性公开它。

    【讨论】:

    • 这个问题已经很久了,但是你把你的 OwnUserIdentity 类和相关模型放在哪里?谢谢!
    • @Jorge:一个好的默认值是OwnUserIdentity 进入protected/components/User 进入protected/models/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多