2011-02-22 52 views
1

比方说,我有自定义的STS认证Web应用程序的用户。该STS还具有用户ID,姓名和电子邮件地址等数据。 我有以下情况:基于声明的身份 - >同步用户数据

我有一个使用STS的应用程序。在这个应用程序中,用户可以创建一个记录,然后其中的一个属性将被填充用户标识。如果人们搜索此记录,我想向他们展示真实姓名而不是用户标识。所以我需要以某种方式保持从用户ID到真实姓名的关系。

问题:在应用程序的数据库中,我只有一个用户ID,但我想显示特定的用户详细信息。什么是最好的方法来做到这一点? 我想添加一个方法到我的STS,让我来查询额外的用户数据,但这将是非常缓慢如果我需要在屏幕上显示50个记录,它们都有不同的用户ID。 另一个解决方案是用我的应用程序中的用户数据保留一张表。当用户第一次使用我的应用程序时,用户被添加到此表中。但是如何以及何时同步这张桌子?

我想我更喜欢解决方案2,并且每晚只是同步数据。

你们认为什么?

回答

2

你可以修改数据库的模式吗?

如果可以,那么您可以从STS获取名称和其他用户属性信息,然后将其保存在您身边(可能位于用户数据库或关联记录中)。您将此视为仅用于查询和显示的“参考”数据,并且不允许进行编辑。

每次用户进行身份验证(并提供包含所有这些声明的令牌)时,只需更新数据库上的信息即可。为了这个工作,你需要一个很好的唯一ID(用户标识符?),它可以被用作用户永久的,可信的句柄。

+0

谢谢。很高兴听到在应用程序数据库中创建“只读”用户表是一个很好的解决方案。在认证事件中更新此表在大多数情况下都很正常。我想我们可以想出一些用户被引用的情况(作为'读者'或某事),但他们从不登录系统,但我们会为此做些工作。 – Thomas 2011-02-24 10:33:58

相关问题