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

时间:2014-11-26 01:39:48

标签: c# asp.net-mvc asp.net-mvc-5 asp.net-identity

我正在使用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的用户登录系统。我不需要角色。所有我想知道的用户是否登录。我的应用程序中没有管理员,管理员或其他用户角色。 如何从应用程序中删除它们,仍然可以使用Identity框架进行用户授权/身份验证和OAuth?首先有可能吗?

2 个答案:

答案 0 :(得分:4)

我不知道有办法做到这一点。

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

我想我会把它留下来,并将其归结为面向未来的应用程序。

答案 1 :(得分:1)

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

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

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

这包括......

  1. public class IdentityDbContext<TUser>
  2. public class IdentityUser
  3. public class UserStore<TUser>
  4. 其他?
  5. 所以你想创建自己的等价物,关键的驱动因素是UserStore,它是你自己数据库的身份之间的接口。

    I wrote an answer关于使用DB第一种方法的更多细节,但这也适用于Code-first(经过一些修改)