Flu*_*ffy 9 language-agnostic oop authorization
我一直在读这个问题,觉得我不太同意这个说法Separation of user and profile data is a nice touch
.
在我看来,分析数据,例如国家或属于用户对象的任何东西,同时将这些数据分成简档导致创建与用户对象具有1对1关系的新对象(和表).仅仅因为美学原因,这种分离是否被认为是一种好的做法?(您只能在一个表中看到用户输入数据,而在另一个表中看到生成的数据)
好吧,只有当你假设用户和个人资料具有一对一的关系时才会这样.
如果保证始终如此,那么分离的原因可能纯粹是审美的,但是仍然可能存在将两者分开的性能原因.
例如,配置文件数据可以被其他用户访问,通常可以缓存而不需要考虑快速失效等.
它们在概念上是不同类型的数据 - 即使它们具有一对一的关系.我永远不会缓存用户登录详细信息 - 但是我不会将程序性地暴露给仅需要配置文件数据的模块.
这是基本原则,如果一对一的关系可以保证.它可以?
如果您允许每个用户使用多个登录凭据(或多个登录方法),现在它变得更有趣.例如,基于cookie的会话通常存储在服务器端的易失性存储中(很少需要持久存储该数据).您是否有指向用户对象或配置文件对象的信息?
您可以拥有单向关系 - 有一个从用户到配置文件的指针,但不是从配置文件到用户.这样,保存配置文件数据的模块无法更改登录详细信息.
最后,如果您使用像facebook这样的解决方案,允许每个用户多次登录电子邮件,并说再通过OpenID和iPhone/Android应用程序登录,该怎么办?你会同意Profile和User仍然是一样的吗?