如何自定义简单的成员资格提供程序以使用我自己的数据库ASP.NET mvc 4

时间:2013-04-03 00:03:08

标签: asp.net-mvc asp.net-mvc-4 membership-provider simplemembership

这些天我正在探索ASP.NET MVC 4。如果有人可以回答我的问题,我会很高兴。

我正在建设一个学术项目“项目管理和支持系统”。我设计了自己的数据库,我的数据库中有用户自己的表(两种用户:执行任务的员工,分配/雇用任务的客户),我是关于创建一个新的会员提供者但是我意识到“这是浪费时间 - 重新发明轮子”。

现在,我正在使用SimpleMembership在ASP.NET MVC4上构建成员模型(这是MVC应用程序的成员服务的未来)。它为ASP.NET框架提供了更简洁的成员资格提供程序,并且还支持OAuth。 / p>

1-我创建了一个开箱即用的ASP.NET MVC 4 Internet应用程序来自定义登录,注册和用户管理逻辑以维护用户配置文件表。 我添加了三个角色:管理员,员工,客户

通过此博文,我可以自定义注册http://blog.longle.net/2012/09/25/seeding-users-and-roles-with-mvc4-simplemembershipprovider-simpleroleprovider-ef5-codefirst-and-custom-user-properties/

2-现在,我正在将此表与我自己的数据库中的用户表进行同步。考虑到我已经添加了另一个“帐户类型”字段,在注册过程中要求用户创建特定的配置文件。

非常感谢任何帮助。

干杯

2 个答案:

答案 0 :(得分:26)

使用SimpleMembership

有两种方法可以存储和使用该信息进行身份验证。

  1. 您可以使用默认(UserProfiles)表,即“DefaultConnection”字符串指向的数据库。

  2. 您可以使用您的数据库和其中的表格来替换默认的UserProfiles表格。

  3. 选项1在其他地方得到了很好的解释。对于选项2,请按照以下步骤操作: 假设您的数据库上下文是mDbContext,并且您要用于替换UserProfiles的表是Employees。

    1. 您的员工模型如下所示

      namespace m.Models
      {
        public class Employee
        {
          [Key]
          [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
          public int ID { get; set; }
          public string UserName { get; set; }
      
          public string FirstName { get; set; }
          public string LastName { get; set; }
          public string Mobile { get; set; }
          public Designation Designation { get; set; }
          .........
      
    2. 您的DbContext看起来像这样

      namespace m.Models
      {
          public class mDBContext : DbContext
          {
               DbSet<Employee> Employees { get; set; }
      ......
      
    3. 您需要告诉WebSecurity使用您的数据库。

      WebSecurity.InitializeDatabaseConnection("mDBContext", 
        "Employees", "ID", "UserName", autoCreateTables: true);
      
    4. 在AccountModel

      中的RegisterModel类中添加其他字段
      public class RegisterModel
      {
          [Required]
          [Display(Name = "User name")]
          public string UserName { get; set; }
      
          [Required]
          [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
          [DataType(DataType.Password)]
          [Display(Name = "Password")]
          public string Password { get; set; }
      
          [DataType(DataType.Password)]
          [Display(Name = "Confirm password")]
          [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
          public string ConfirmPassword { get; set; }
      
          public string FirstName { get; set; }
          public string LastName { get; set; }
          public string Mobile { get; set; }
          public Designation Designation { get; set; }
      }
      
    5. 在AccountController中注册HttpPost的方法替换

      WebSecurity.CreateUserAndAccount(model.UserName, model.
      

      WebSecurity.CreateUserAndAccount(model.UserName, model.Password, 
        new {  FirstName = model.FirstName, LastName = model.LastName, 
               Mobile = model.Mobile});
      
    6. 在等待任何更改(或添加迁移)时重建和更新数据库。

答案 1 :(得分:0)

按照以下链接的类似问题的答案。如果您还有其他问题,请与我们联系。

Similar Question with answer

<强>更新

在阅读完第一条评论之后,听起来您需要先了解MVC的所有内容,然后才能触及SimpleMembership。尝试以下链接。

wikipedia

w3schools

MSDN

http://www.asp.net/mvc