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