如何使用MVC5RC/RTW与现有数据库进行身份验证

Tim*_*Tim 5 forms-authentication visual-studio visual-studio-2013 asp.net-mvc-5 asp.net-identity

我最初在Identity处于测试版时问过这个问题.从那时起,类和接口发生了很大的变化,看起来 RTW版本在RC版本上再次进行了一些修改.原则上我需要实现以下目标.

  • 根据我的usertable tblMembers验证本地登录,其中包含userid字段和密码,这是我需要进行身份验证的两个项目.
  • 可以通过Controller.User属性访问我的tblMember记录/类(在MVC5身份之前我使用成员资格提供程序方法实现了这一点.)无论用户是通过localuser方法还是通过其他OAuth提供程序登录( Twitter,谷歌等).
  • 尽管使用登录方法,仍能显示我自己的自定义用户名.本地用户使用用户ID 1234567和密码登录,理想情况下我想显示"John Smith(1234567)",无论身份验证方法如何(本地/ Twitter等)

最初我不确定我的成员类应该继承什么从aspIdentitySample项目看,我应该使用IdentityUser?

        public partial class tblMember
        {
            public int id { get; set; }
            public string membership_id { get; set; }
            public string password { get; set; }
            ....other fields
        }
Run Code Online (Sandbox Code Playgroud)

是否有任何新的或更新的示例将现有数据库/用户表与ASP.NET身份系统集成?

Cas*_*ben 4

我还将身份表添加到我的数据库中。如果您在 Visual Studio 2013 中创建一个新的 Web 项目,您将看到现在在 RTM 中一切都比 RC 更好,而且您将看到下表

  public class ApplicationUser : IdentityUser
  {


   }
Run Code Online (Sandbox Code Playgroud)

因此,您可以调用表 tblMembers,而不是 ApplicationUser

  public class tblMembers : IdentityUser
  {


   }
Run Code Online (Sandbox Code Playgroud)

您的表 tblMembers 将继承 Id 用户名密码安全标记和一个鉴别器列,表明这是一个 tblMemeber

如果不创建用于身份验证的自定义类,最简单的方法就是将用户名设置为旧用户名和用户 ID 的组合。然后将用户的真实姓名或旧用户名(不带用户 ID)存储在单独的列中。

让用户使用内置用户登录进行注册,他们可以转到管理帐户并单击使用其他服务进行登录。这会将 Google 帐户链接到他们的常规帐户,因此无论他们使用哪一个帐户,都会登录到同一个帐户。如果您有具有连接表信息的用户,我建议您使用与模板中找到的注册方法类似的方法为所有用户播种表。然后只需将新的组合用户名和 Id 与旧的用户名和 Id 相匹配,并在需要的地方填充数据SQL管理工作室。

同样,RC 中扩展 IdentityUsers 的许多问题都已得到修复。Microsoft 已经向身份用户存储添加了更多功能,本教程http://www.windowsazure.com/en-us/develop/net/tutorials/web-site-with-sql-database/应该很快就会更新。我计划在完成更改数据库后进行自己的演练,但现在我希望我的建议,即使它们是比您可能想要实现的更简单的解决方案。