我正在使用ASP .Net MVC 5 Identity framework
在我的简单MVC 5
应用程序中管理用户身份验证。我的数据库包含5个与身份相关的表:
dbo.AspNetUsers
dbo.AspNetRoles
dbo.AspNetUserRoles
dbo.AspNetUserClaims
dbo.AspNetUserLogins
我想要实现的目标基本上是删除AspNetRoles
,AspNetUserRoles
(只是一个关系表)和AspNetUserClaims
。只留下:
dbo.AspNetUsers
dbo.AspNetUserLogins
因为我目前正在使用基于OAuth2.0的用户登录系统。我不需要角色。所有我想知道的用户是否登录。我的应用程序中没有管理员,管理员或其他用户角色。 如何从应用程序中删除它们,仍然可以使用Identity框架进行用户授权/身份验证和OAuth?首先有可能吗?
答案 0 :(得分:4)
我不知道有办法做到这一点。
您要做的是从Identity中删除一些不可或缺的部分。由于最终实体框架生成表格,您可以通过基于身份代码滚动自己的模型来实现您想要做的事情,剪掉您不需要的部分 - 但我认为您将要去花费大量的时间和精力来追平死胡同,试图让它正常工作。
我想我会把它留下来,并将其归结为面向未来的应用程序。
答案 1 :(得分:1)
是的,你可以毫不费力地做到这一点。真正的原因是为什么?这些东西已经创建,您需要完成其他工作才能删除它们。如果您不需要它们,请不要使用它们。
如果你是一个纯粹主义者,那么这些是改变它的必要步骤......
如果您查看Microsoft.AspNet.Identity
命名空间,您会看到另一个名为Microsoft.AspNet.Identity.EntityFramework
的命名空间。这个命名空间本质上是“默认的做事方式”。使用您自己的实现删除并替换对此命名空间的所有引用。
这包括......
public class IdentityDbContext<TUser>
public class IdentityUser
public class UserStore<TUser>
所以你想创建自己的等价物,关键的驱动因素是UserStore
,它是你自己数据库的身份之间的接口。
I wrote an answer关于使用DB第一种方法的更多细节,但这也适用于Code-first(经过一些修改)