我的Yii项目中至少有一个模型需要引用特定的用户ID。在我的模型SQL中,我有CONSTRAINT FOREIGN KEY (user_id) REFERENCES User(id)
之类的东西。当我遇到CUserIdentity的文档时,我将继续创建一个User模型。我不得不承认我很困惑。 CUserIdentity是用户还是与特定用户案例相关联的州?我想尽可能多地使用内置的Yii功能,因为它们根据我的理解处理了许多与安全相关的问题,并且我知道存在一些处理用户的srbac
模块身份验证和注册管理。请指导我正确的方向。 (还有问题:模型和组件之间的关系是什么?)
答案 0 :(得分:6)
首先,请继续创建User
模型,您将需要它。
有了这个:CUserIdentity
代表“用户是谁”的概念,而User
模型代表“关于我的应用程序用户的信息”。 CUserIdentity
适用于存在多种用户(即访客)的所有情况,而User
模型仅适用于您自己存储用户信息的情况。不可否认,在大多数情况下,两者都适用,这就是造成混淆的原因。
通常,两者之间的关系是CUserIdentity
,以便回答诸如“用户是谁”,“允许用户访问此资源的用户”之类的问题等。查询{{1}从数据库中获取模型以获取回答这些问题所需的信息。在Yii的权威指南中,这两个概念之间的关系也是documented。例如在对用户进行身份验证时,它会通过自己的属性(您必须定义)公开User
模型上的部分或全部信息。
要举例说明没有User
模型的情况,请考虑一个允许您使用LDAP用户帐户登录的网站。调用User
方法时,组件将针对LDAP服务器验证凭据,并且在成功验证后将再次获取任何其他相关信息并通过其自己的属性公开它。