ASP.NET 身份 - 自定义 UserManager、UserStore

ASP.NET Identity - custom UserManager, UserStore

我对自定义 UserManager 和 UserStore 有点困惑。 开箱即用的解决方案随 EF 实现一起提供,我不想使用 EF,而是使用我自己的使用 MSSQL 的 DAL。我想要基于声明的安全性,其中一个用户声明将成为角色。

我感到困惑的是我应该做的整个过程。据我所知,到目前为止我需要自己做

CustomApplicationUser : IUser
CustomUserManager : UserManager<CustomApplicationUser>
CustomUserStore : IUserStore, IUserClaimStore

问题:

  1. 我这样做是否正确?
  2. 我想在我的 CustomUserManager 上使用 IsInRole() 方法,但不确定如何使用 Claims。我知道 IUserRoleStore.IsInRole() 默认 UserManager 在 UserManager.IsInRole() 中调用,但我不想在我的数据库中使用单独的角色 table。我想要的是 Claims DB table,其中一个 ClaimType 是 Role 并且 UserManager.IsInRole() 使用它。 现在,我不确定为什么我需要 UserManager.IsInRole() 方法?我是否真的需要自定义 ClaimsIdentity SignInManager.CreateUserIdentityAsync() 之类的东西,并在其中调用我自己的实现来填写所有用户信息,包括 Claims?

这对我来说似乎有点混乱,而且我似乎找不到关于它的一些明确文档,所以如果有人能对它有所了解,我将不胜感激!

我不会只是复制,而是将您指向以下文章:Overview of Custom Storage Providers for ASP.NET Identity

看看这个,它应该能让您很好地了解身份在 ASP.NET 中的工作原理。这也有助于选择您要在应用程序中覆盖和自定义的内容。