使用Microsoft Identity从Web Api的扩展UserClaim表中获取声明



我正在做ASP。Net 5, web api项目,并使用Microsoft Identity和jwt令牌为基础进行安全管理。我已经扩展了用户索赔表,并在该表中添加了新的isSelected行。我需要知道,我如何才能从表中获得具有isSelected == true的声明,是否有任何方法可以将_signinManager服务用于此任务?在正常情况下,我可以这样做:

var claims = await _signinManager.ClaimsFactory.CreateAsync(user)

并获得ClaimPrincipals,但这将返回所有的声明,无论isSelectedtrue还是false

谢谢!

一些行为需要自定义。与您的情况类似,您希望默认配置根据特定的列名(isSelected)过滤数据列表,并只返回过滤后的列表。最好的方法是使用自定义的UserManagerSignInManager,并创建一个方法来完成您所要求的。

我有个想法:创建一个名为IList<UserClaim> GetUserClaimsBasedOnSelection(bool isSelected, User user)的方法。该方法所要做的就是使用底层的Claims检索方法,并对该列表进行筛选,使其只返回选定的Claims。就是这样。然后在Program.csstartup.cs中注册配置好的SignInManager通过将此服务添加到AddIdentity服务配置中.AddSignInManager<YourSignInManager>()

最新更新