【问题标题】:Customize IdentityUser without Roles自定义没有角色的 IdentityUser
【发布时间】:2017-07-14 15:08:44
【问题描述】:

我已经开始开发一个新的 ASP.NET MVC 应用程序,我想使用 ASP.NET Identity 2 进行用户管理。我想摆脱角色,因为我认为这绝对不需要,特别是如果我想到这种方式,ASP.NET Identity 在幕后处理角色:正如声明的那样。 (如有错误请指正)

我有两个关于这个问题的信息:This official Microsoft-Documentation 指出,如果开箱即用的方法不能满足所有要求,则只需要实现所需的功能。另一个信息是,必须从Microsoft.AspNet.Identity.EntityFramework.IdentityUser 派生自定义用户。但是 IdentityUser 实现了IdentityUser<string, IdentityUserLogin, IdentityUserRole, IdentityUserClaim>, IUser, IUser<string>

从我的角度来看,这些信息并不是真正兼容的,因为如果我从这个 IdentityUser 派生,无论我需要与否,我都会将所有这些东西放入我的 CustomUser-Implementation 中。

还有一件事我想知道:根据我对身份架构的理解,主要有两个部分:商店和经理。 Manager 耦合到 Application 和 Store,而 Store 耦合到 Manager 和 Storage。

存储接口与我预期的一样灵活。也许我应该从这里开始 - 但我仍然不知道如何创建一个 customUser 作为一个实体,它派生自 IdentityUser,而不引用任何角色。谁能告诉我我的问题是什么?

我发现的关于这个问题的唯一 stackoverflow 问题是 here。但我不相信,这是一种可以遵循的方法。

【问题讨论】:

  • 你可以使用 ASP.NET Core 吗?
  • 你想摆脱角色,但你想要什么回报?
  • 我不理解这种想要摆脱那些不在你身边的东西的愿望。如果您不需要角色 - 不要使用它们。是的,您的数据库中将有 2 个表。所以呢?这些表将是空的,几乎不会占用任何空间(现在存储空间很便宜)。努力把它们挖出来是浪费时间,而且不会很成功。
  • @Win:不幸的是,目前还没有。我们必须等待,尤其是对于 EF Core..
  • @Ruard:声明。也许我这里有问题,但我认为基于声明的方法可以取代基于角色的方法。

标签: c# asp.net asp.net-mvc-4 entity-framework-6 asp.net-identity-2


【解决方案1】:

嗯,首先,你不能真正摆脱角色。您可以选择不使用它们,但您仍将拥有一个 AspNetRoles 表。随着角色功能的加入,没有办法摆脱它。身份是可扩展的,因为您可以自定义和扩展角色,但关系是不可移除的。 Microsoft 文档本身并没有错;只是可能并不完全清楚。如果您不想使用角色,则不必实现任何基于角色的功能。换句话说,您不必创建功能来管理角色、为用户分配角色或验证用户是否属于特定角色。但是,这并不意味着核心角色功能不再存在于 Identity 中:只是您可以选择不使用它。

其次,角色实际上是需要的,至少如果您希望拥有基于权限的访问控制。如果每个登录用户都可以做任何其他登录用户可以做的事情,那么角色可能不是必需的,但如果有任何特定于用户子集的功能,那么您需要角色。此外,角色不是声明,尽管它们的功能与声明一样。不过,身份有一个单独的“声明”概念。

【讨论】:

  • 首先,感谢您的回答!我有一个需要经典角色的应用程序。但是是否也可以对“角色”采用基于声明的方法?我读过,不建议将这两种方法混合使用。而且角色至少不那么灵活,也不那么可定制,不是吗?
  • 开箱即用,它们可能不太灵活,但您几乎可以通过足够的努力赋予它们任何您喜欢的力量。 Identity 的每个部分都是可扩展的。由于没有固有的用例,声明更灵活。您可以使用它们,但是您需要使用它们并按照您的意愿塑造它们。但是,我个人认为忽略现有的角色系统并在声明的背后滚动自己的角色系统是一个坏主意。您不仅最终会得到重复的功能,而且您还要负责为此的所有逻辑。
  • 这实际上在 ASP.NET Core 2.0 及更高版本中非常容易实现。我在这里提供了答案:stackoverflow.com/a/54162113/608220
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 2020-11-20
  • 1970-01-01
  • 2015-01-09
  • 2020-09-05
  • 2018-03-09
相关资源
最近更新 更多