1

我正在关注关于复数视觉的 HTML5 业务线课程以使用简单会员资格。我使用相同的代码,但在使用 SimpleMembership 和自定义表创建帐户时出错。我找不到它有什么问题。有人可以帮忙吗?

列名“ConfirmationToken”无效。
列名“PasswordChangedDate”无效。
列名“PasswordFailuresSinceLastSuccess”无效。

这是我的代码

注册方法:

  public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                // Attempt to register the user
                try
                {
                    WebSecurity.CreateUserAndAccount(model.UserName, model.Password,
                        new
                        {
                            FirstName = "Admin",
                            LastName = "Admin",
                            IsActive = true,
                            CreatedOn = DateTime.Now,
                            ModifiedOn = DateTime.Now
                        });
                    WebSecurity.Login(model.UserName, model.Password);
                    return RedirectToAction("Index", "Home");
                }
                catch (MembershipCreateUserException e)
                {
                    ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                }
            }

实体:

 public class Membership 
    {
        public int UserId {get; set;}
        public DateTime? CreateDate { get; set; }
        public string ConfirmationTokeen { get; set; }
        public bool? IsConfirmed { get; set; }
        public DateTime? LastPaswordFailureDate { get; set; }
        public int PasswordFailureSinceLastSuccess { get; set; }
        public string Password { get; set; }
        public DateTime? PasswordChangeDate { get; set; }
        public string PasswordSalt { get; set; }
        public string PasswordVerificationToken { get; set; }
        public DateTime? PasswordVerificationTokenExpirationDate { get; set; }
    }

public class OAuthMembership 
    {
        public string  Provider { get; set; }
        public string ProviderUserId { get; set; }
        public int UserId { get; set; }
    }
public class Role
    {
        public int RoleId {get; set;}
        public string RoleName {get; set;}

        public ICollection<User> Users { get; set; }

        public Role()
        {
            this.Users = new List<User>();
        }
    }
  public class User : IAuditInfo
    {
        public int Id {get; set;}

        public string Username{get; set;}

        public string FirstName {get; set;}
        public string LastName { get; set; }


        public bool IsActive{get; set;}

        public DateTime? CreatedOn { get; set; }
        public DateTime? ModifiedOn {get; set;}

         public ICollection<Role> Roles { get; set; }

        public User()
        {
            this.Roles = new List<Role>();
        }
    }

配置

 public UserConfiguration()
        {
            this.Property(p => p.Id).HasColumnOrder(0);
            this.Property(p => p.Username).IsRequired().HasMaxLength(200);
            this.Property(p => p.FirstName).IsOptional().HasMaxLength(100);
            this.Property(p => p.LastName).IsOptional().HasMaxLength(100);

            this.HasMany(a => a.Roles).WithMany(b => b.Users).Map(m =>
            {
                m.MapLeftKey("UserId");
                m.MapRightKey("RoleId");
                m.ToTable("webpages_UsersInRoles");
            });
        }

 public RoleConfiguration()
        {
            this.ToTable("webpages_Roles");
            this.Property(p => p.RoleName).HasMaxLength(256).HasColumnType("nvarchar").IsRequired();
        }

 public OAuthMembershipConfiguration()
        {
            this.ToTable("webpages_OAuthMembership");
            this.HasKey(k => new { k.Provider, k.ProviderUserId });
            this.Property(p => p.Provider).HasMaxLength(128).HasColumnType("nvarchar").IsRequired();
            this.Property(p => p.ProviderUserId).HasMaxLength(128).HasColumnType("nvarchar").IsRequired();
            this.Property(p => p.UserId).IsRequired();
        }

public MembershipConfiguration()
        {
            this.ToTable("webpages_Membership");
            this.HasKey(s => s.UserId);
            this.Property(p => p.UserId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
            this.Property(p => p.ConfirmationTokeen).HasMaxLength(128).HasColumnType("nvarchar");
            this.Property(p => p.PasswordFailureSinceLastSuccess).IsRequired();
            this.Property(p => p.Password).IsRequired().HasMaxLength(128).HasColumnType("nvarchar");
            this.Property(p => p.PasswordSalt).IsRequired().HasMaxLength(128).HasColumnType("nvarchar");
            this.Property(p => p.PasswordVerificationToken).HasMaxLength(128).HasColumnType("nvarchar");
        }

筛选:

公共 SimpleMembershipInitializer() {

            DataContext context = new DataContext();
            context.Database.Initialize(true);

            try
            {
                    if (!context.Database.Exists())
                    {
                        ((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
                    }
                WebSecurity.InitializeDatabaseConnection(
                    Config.ConnectionStringName, 
                    Config.UsersTableName, 
                    Config.UsersPrimaryKeyColumnName, 
                    Config.UsersUsernameColumnName, 
                    autoCreateTables: true);
            }
            catch (Exception ex)
            {
            }
        }
4

0 回答 0