我正在做ASP。Net 5, web api项目,并使用Microsoft Identity和jwt令牌为基础进行安全管理。我已经扩展了用户索赔表,并在该表中添加了新的isSelected
行。我需要知道,我如何才能从表中获得具有isSelected == true
的声明,是否有任何方法可以将_signinManager
服务用于此任务?在正常情况下,我可以这样做:
var claims = await _signinManager.ClaimsFactory.CreateAsync(user)
并获得ClaimPrincipals
,但这将返回所有的声明,无论isSelected
是true
还是false
。
谢谢!
一些行为需要自定义。与您的情况类似,您希望默认配置根据特定的列名(isSelected
)过滤数据列表,并只返回过滤后的列表。最好的方法是使用自定义的UserManager
或SignInManager
,并创建一个方法来完成您所要求的。
我有个想法:创建一个名为IList<UserClaim> GetUserClaimsBasedOnSelection(bool isSelected, User user)
的方法。该方法所要做的就是使用底层的Claims检索方法,并对该列表进行筛选,使其只返回选定的Claims。就是这样。然后在Program.cs
或startup.cs
中注册配置好的SignInManager
通过将此服务添加到AddIdentity
服务配置中.AddSignInManager<YourSignInManager>()