忽略 ASP .Net MVC 5 标识中的用户角色

本文关键字:用户 角色 标识 ASP Net MVC 忽略 | 更新日期: 2023-09-27 18:32:03

我目前使用ASP .Net MVC 5 Identity framework来管理简单MVC 5应用程序中的用户身份验证。我的数据库包含 5 个与身份相关的表:

dbo.AspNetUsers
dbo.AspNetRoles
dbo.AspNetUserRoles
dbo.AspNetUserClaims
dbo.AspNetUserLogins

我想要实现的是,基本上,删除AspNetRolesAspNetUserRoles(这只是一个关系表)和AspNetUserClaims。并且只留下:

dbo.AspNetUsers 
dbo.AspNetUserLogins

因为我目前正在使用基于 OAuth2.0 的用户登录系统。我不需要角色。我想知道的关于用户的一切是他是否登录。我的应用程序中没有经理、管理员或其他用户角色。如何从应用程序中删除它们,并且仍然能够使用标识框架进行用户授权/身份验证和 OAuth?首先

忽略 ASP .Net MVC 5 标识中的用户角色

有可能吗?
我不知道有什么

方法可以做到这一点。

您要做的是从标识中删除一些不可或缺的部分。由于最终是实体框架生成表,因此您可以通过基于标识代码滚动自己的模型来实现您想要做的事情,剪掉您不需要的部分 - 但我认为您将花费大量时间和精力在死胡同中试图使其正常工作。

我想我会把它留在那里,把它归结为面向未来的应用程序。

是的,您可以毫不费力地做到这一点。真正的原因是为什么?这些内容已经创建,您需要执行其他工作才能删除它们。如果您不需要它们,请不要使用它们。

如果你有点纯粹主义者,那么这些是改变这一点的必要步骤......

如果您查看Microsoft.AspNet.Identity命名空间,您将看到另一个名为 Microsoft.AspNet.Identity.EntityFramework 的命名空间。此命名空间本质上是"默认的做事方式"。删除并用您自己的事物实现替换对此命名空间的所有引用。

这将包括...

  1. public class IdentityDbContext<TUser>
  2. public class IdentityUser
  3. public class UserStore<TUser>
  4. 别人?

因此,您需要创建自己的等效项,关键驱动程序是UserStore,它是Identity与您自己的数据库之间的接口。

我使用 DB 优先方法写了一个关于此细节的答案,但这也适用于代码优先(有一些修改)