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

Dan*_*iel 6 .net asp.net owin asp.net-identity

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

  1. Is generally ASP.NET Identity used在中型/大型项目的公司中,或者他们通常采用定制实施?

  2. 我想知道it's worth using ASP.NET Identity用户和角色管理是否比用户/角色管理or更好,我想可以了解更多并拥有更多控制权。create custom logic

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

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

Mih*_*kov 5

由于 ASP.NET Identity 是高度可定制的,因此您可以充分利用这两个世界。

在我的公司,我们使用自定义实现,IUserStore使我们能够灵活地按照我们想要的方式保留用户信息。例如,我们不使用实体框架,这是 ASP.NET Identity 使用的默认数据访问。

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

密码散列/验证过程也不同,等等。

您只需将您的自定义实例传递给IUserStore即可ApplicationUserManager

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

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

IUserStore<,>
IUserLoginStore<,>
IUserClaimStore<,>
IUserRoleStore<,>
IUserPasswordStore<,>
IUserEmailStore<,>
IUserLockoutStore<,>
IUserTwoFactorStore<,>
IQueryableUserStore<,>
Run Code Online (Sandbox Code Playgroud)

我们也用它来进行身份验证。请记住,这是经过测试并将更新的。这也有很好的记录,任何加入该项目的新开发人员都有更大的机会了解正在发生的事情。如果您采用完全自定义的解决方案,您将必须维护该解决方案并尝试使其与最新趋势/内容保持更新。

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