【问题标题】:Ignore user roles in ASP .Net MVC 5 Identity忽略 ASP .Net MVC 5 Identity 中的用户角色
【发布时间】:2014-11-26 01:39:47
【问题描述】:

我目前正在使用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?首先有可能吗?

【问题讨论】:

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


    【解决方案1】:

    我不知道有什么方法可以做到这一点。

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

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

    【讨论】:

      【解决方案2】:

      是的,您可以毫不费力地做到这一点。真正的原因是为什么?这些东西已经被创建,您需要通过额外的工作来删除它们。如果您不需要它们,请不要使用它们。

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

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

      这将包括...

      1. public class IdentityDbContext<TUser>
      2. public class IdentityUser
      3. public class UserStore<TUser>
      4. 其他?

      因此,您可能希望创建自己的等效项,关键驱动程序是 UserStore,它是身份与您自己的数据库之间的接口。

      I wrote an answer 详细介绍了使用 DB 优先方法的更多细节,但这也适用于代码优先(有一些修改)

      【讨论】:

        猜你喜欢
        • 2021-09-08
        • 2019-05-01
        • 2019-02-12
        • 1970-01-01
        • 2016-10-24
        • 2013-11-10
        • 2016-07-28
        • 2015-02-01
        • 2021-12-14
        相关资源
        最近更新 更多