【问题标题】:ASP.NET MVC 5 Identity 2.0 & OWIN Two Factor Authentication by using existing DB使用现有数据库的 ASP.NET MVC 5 Identity 2.0 和 OWIN 两因素身份验证
【发布时间】:2014-12-11 05:15:40
【问题描述】:

在从事 Web 表单工作 4 年后,我刚刚开始使用 MVC。我看过一些解释架构/基础知识的视频,现在我可以使用 EF6 使用 MVC5 复制我旧项目的几个模块。

我有一个 SQL Server 数据库,其中包含专辑/艺术家/标题/评论等表和用户表。我能够使用 EF6 处理第一组表,包括插入/删除。上一个项目我使用 BCrypt 实现了自定义 Web 表单身份验证,方法是将详细信息存储在 User 表中,然后进行验证并设置身份验证 cookie。

User 表包含诸如 UserId、PWHash、EMail、FirstName、LastName 等详细信息。 UserId 是 Review 表中的一个 FK 和其他几个。

我希望的实现如下:

  1. Login screen accepts credentials and validates with existing User table.
  2. If valid, move to the 2FA screen(eMail/SMS).
  3. If valid, then allow access to application.

大部分教程都说如何扩展 FirstName/LastName 等属性,但没有说如何使用现有数据库。我打算使用 bcrypt/scrypt 来加密敏感细节。

我已经查看了MVC 5 & ASP.NET Identity - Implementation Confusion,但 id 没有我的所有问题的答案

我只需要关于如何插入现有数据库而不是使用默认提供的 dbcontext 的起点

【问题讨论】:

    标签: asp.net asp.net-mvc owin two-factor-authentication


    【解决方案1】:

    如果您的应用使用 EF Code First,那么您可以使用现有架构并插入您自己的用户。请看以下示例,该示例展示了如何重用现有用户信息并将其插入 Identity http://aspnet.codeplex.com/SourceControl/latest#Samples/Identity/CustomMembershipSample/Readme.txt

    您不必从 IdentityDbContext 继承。您可以直接使用 DbContext。在这种情况下,您必须重写 onModelCreating 以创建用户/角色表以及表之间的所有映射。

    【讨论】:

      【解决方案2】:

      就我个人而言,当您脱离传统时,我也觉得文档非常令人沮丧,因此您可能会陷入痛苦的世界。

      最简单的方法是自己完全控制身份验证过程,使用FormsAuthentication

      但是,如果您想利用 MVC5 提供的大量开箱即用代码,但针对自定义数据库或架构,您可能必须实现自己的 UserStore 和 UserManager 等等.

      问题是,有很多事情要实现,所以保证你会玩得很开心。

      请阅读Custom Storage Prodivers 上的这篇文章,以抢占先机。

      祝你好运

      【讨论】:

      • 谢谢。如果我卡在某个地方,我会看看并更新你。
      猜你喜欢
      • 2014-01-02
      • 2018-07-30
      • 2016-06-21
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 2014-12-11
      相关资源
      最近更新 更多