ASP.NET 身份与自定义实现,使用哪一个?

ASP.NET Identity vs custom implementation, which one to use?

我是一名初级全栈工程师,我正在从事一个大型 SPA(针对一个人)项目,作为对我所学知识的挑战和演示,我有 3 个问题:

  1. Is generally ASP.NET Identity used 在公司中用于 medium/big 个项目,或者他们通常使用自定义实现?

  2. 我想知道 it's worth using ASP.NET Identity 对于用户和角色管理 or 是否比 create custom logic 对于 users/roles 更好 我猜想了解更多并拥有更多控制.

  3. 如果I'll continue developing with identity,如果我只用它来管理用户和角色会很糟糕,因为我看到它也有认证API,但我用OAUTH2,设置令牌非常快,而且可以正常工作。那么我是否应该尝试在身份验证中尽可能多地使用 Identity 来对这个框架的 explain the use 进行自定义实现?

你只能回答第一个问题,因为其他两个太主观了。谢谢!

由于 ASP.NET 身份是高度可定制的,因此您可以从两个世界中取长补短。

在我的公司,我们使用 IUserStore 的自定义实现,这让我们可以灵活地以我们想要的方式保留用户信息。例如,我们不使用 Entity Framework,这是 ASP.NET 身份使用的默认数据访问。

在我们的例子中,表是不同的,它们更好地匹配我们应用程序的实际用户数据(读取业务对象)。

密码hashing/verification过程也不同等等

您只需将自定义 IUserStore 的一个实例传递给 ApplicationUserManager 就可以了。

我个人的意见是:使用 ASP.NET 标识并只替换您需要的部分。

编辑: 您也可以实现所有这些

IUserStore<,>
IUserLoginStore<,>
IUserClaimStore<,>
IUserRoleStore<,>
IUserPasswordStore<,>
IUserEmailStore<,>
IUserLockoutStore<,>
IUserTwoFactorStore<,>
IQueryableUserStore<,>

我们也用它来进行身份验证。请记住,这已经过测试并将更新。 Is 也有很好的记录,任何参与该项目的新开发人员都有更大的机会了解正在发生的事情。如果您使用完全自定义的解决方案,则必须维护它并尝试使用最新的 trends/stuff.

对其进行更新。

希望这有助于做出更好的决定。