Wif 在声明中存储用户详细信息-搜索用户

Wif 在声明中存储用户详细信息-搜索用户,wif,claims-based-identity,Wif,Claims Based Identity,我正在构建一组自定义声明,每个声明都定义了有关用户的信息,如年龄、性别、地址等。声明随后作为键/值对存储在数据库中。可以动态添加声明类型,以便在需要时扩展用户信息 然而,我遇到了一个小小的限制,即要求索赔值是字符串。特别是,在有大量用户(>100.000)的情况下,这是非常明显的,我想执行一个复杂的搜索查询,即我要查找所有年龄>50岁的用户。假设BirthDate是另一个在数据库中存储为字符串的声明,那么在直接对datetime类型的列发出查询或搜索所有用户的声明集这两种情况下,SQL性能肯定会

我正在构建一组自定义声明,每个声明都定义了有关用户的信息,如年龄、性别、地址等。声明随后作为键/值对存储在数据库中。可以动态添加声明类型,以便在需要时扩展用户信息

然而,我遇到了一个小小的限制,即要求索赔值是字符串。特别是,在有大量用户(>100.000)的情况下,这是非常明显的,我想执行一个复杂的搜索查询,即我要查找所有年龄>50岁的用户。假设BirthDate是另一个在数据库中存储为字符串的声明,那么在直接对datetime类型的列发出查询或搜索所有用户的声明集这两种情况下,SQL性能肯定会下降


如何处理此问题?

如何在数据库中存储索赔取决于您自己。您不必被迫使用字符串。你可以用任何你想要的类型。这与WIF可能将其值存储为字符串这一事实是不同的

这很清楚,但是,我正在尝试创建一个通用UI,您可以在其中定义声明类型,然后将每个声明类型添加到特定标识中。我还想构建一个通用服务,通过使用这些声明类型生成一个令牌。如果我将年龄存储在UserProfiles表中,我就不能这样做——这就是特定的逻辑。我正在考虑扩展ClaimTypes表以引入ValueType属性,然后对于每个特定的声明,我可能在数据库中有3列:IntValue、DateTimeValue和StringValue。这将允许我发出更快的查询。