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

问题描述:

我对自定义UserManager和UserStore有点困惑。 开箱即用的解决方案带有EF实现,我不想使用EF,但使用我自己的使用MSSQL的DAL。我想要有基于声明的安全性,其中一个用户声明将成为角色。ASP.NET身份 - 自定义UserManager,UserStore

我感到困惑的是我应该做的整个过程。从我已了解到目前为止,我需要让我自己

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

问题:

  1. 我在正确的轨道与此有关?
  2. 我想在我的CustomUserManager上使用IsInRole()方法,但不知道如何使用Claim。我知道有IUserRoleStore.IsInRole()默认的UserManager在UserManager.IsInRole()中调用,但我不想在我的数据库单独的角色表。我想要的是ClaimType为Role的Claims DB表,并且UserManager.IsInRole()使用它。 现在,我不确定为什么我会需要UserManager.IsInRole()方法?我真的需要像自定义ClaimsIdentity SignInManager.CreateUserIdentityAsync()这样的一个调用我自己的实现填充所有用户信息,包括索赔?

这对我来说似乎有点困惑,我似乎无法找到一些关于它的清晰文档,所以如果任何人可以摆脱这一点,我会高度赞赏它!

+1

新的范例是基于声明的。声明只是与用户关联的值(字符串)的集合。作为声明实施角色。 'IsInRole()'和其他与角色相关的API可以用于较老的心理范例。 – Sherlock

而不是仅仅复制我只会指向你下面的文章:Overview of Custom Storage Providers for ASP.NET Identity

看看这个,它应该给你很好的概述如何身份在ASP.NET中工作。选择想要在应用程序中覆盖和自定义的内容也很好。

+0

以下是该文章的.NET Core版本:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-custom-storage-providers –