假设我有自定义STS来验证网络应用的用户。此STS还包含用户ID,名称和电子邮件地址等数据。 我有以下情况:
我有一个使用STS的应用程序。在此应用程序中,用户可以创建记录,然后其中一个属性将是“创建者”,其中包含用户ID。如果人们搜索此记录,我想向他们显示真实姓名而不是用户ID。所以我需要以某种方式保持从用户ID到真实姓名的关系。
问题:在应用程序的数据库中,我只有一个用户ID,但我想显示特定的用户详细信息。最好的方法是什么? 我想在我的STS中添加一个方法,让我查询其他用户数据,但这将非常慢如果我需要在屏幕上显示50条记录,这些记录都有不同的用户ID。 另一个解决方案是使用用户数据在我的应用程序中保留一个表。当我的应用程序第一次使用“用户”时,会将用户添加到此表中。但是你如何以及何时同步这个表?
我认为我更喜欢解决方案2,并且每晚都会同步数据。
你们有什么想法?
答案 0 :(得分:2)
您可以修改数据库的架构吗?
如果可以,那么您可以从STS获取名称和其他用户属性信息,然后将其保存在您的身边(可能在用户数据库或相关记录中)。您将此视为仅用于查询和显示的“参考”数据,并且不允许编辑。
每次用户进行身份验证(并显示包含所有这些声明的令牌)时,您只需更新数据库中的信息即可。为此,您需要一个良好的唯一ID(用户ID?),可用作用户的永久可信句柄。