0

Я работаю над формами Authnetication, где я использовал свою собственную Entity Framework, а также я использовал DataContext для предоставления ролей пользователям. Я зашит в DataCOntectInitializer нижеEntity Framework Enable-Migrations -EnableAutomaticMigrations?

общественного класса DataContextInitializer: CreateDatabaseIfNotExists { защищены переопределения недействительного Seed (DataContext контекст) { Ролей Role1 = новые роли {RoleName = "Admin"}; Роли role2 = новые Роли {RoleName = "Пользователь"};

 User user1 = new User { Username = "admin", EmailId = "[email protected]", FirstName = "Admin", Password = "123456", IsActive = true, DateCreated = DateTime.UtcNow, Roles = new List<Roles>() }; 

     User user2 = new User { Username = "user1", EmailId = "[email protected]", FirstName = "User1", Password = "123456", IsActive = true, DateCreated = DateTime.UtcNow, Roles = new List<Roles>() }; 

     user1.Roles.Add(role1); 
     user2.Roles.Add(role2); 

     context.Users.Add(user1); 
     context.Users.Add(user2); 

     context.SaveChanges(); 
    } 
} 

И мой Логин Метод:

[HttpPost] [AllowAnonymous]

public ActionResult Login(LoginViewModel model, string returnUrl=" ") 
    { 
     if (ModelState.IsValid) 
     { 
      var user1 = Context.Users.Where(u => u.Username == model.Username && u.Password == model.Password).FirstOrDefault(); 
      var user = ob.Users.Where(u => u.Username == model.Username && u.Password == model.Password).FirstOrDefault(); 
      if (user != null) 
      { 
       var roles = user.Roles.Select(m => m.RoleName).ToArray(); 
       CustomPrincipalSerializeModel serializeModel = new CustomPrincipalSerializeModel(); 
       serializeModel.UserId = user.UserId; 
       serializeModel.FirstName = user.FirstName; 
       serializeModel.LastName = user.LastName; 
       serializeModel.roles = roles; 


       string userData = JsonConvert.SerializeObject(serializeModel); 
       FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, user1.EmailId, DateTime.Now, DateTime.Now.AddMinutes(15), false, userData); 

       string encTicket = FormsAuthentication.Encrypt(authTicket); 
       HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); 
       Response.Cookies.Add(faCookie); 
       if (roles.Contains("Admin")) 
       { 
        return RedirectToAction("Index", "Admin"); 
       } 
       else if (roles.Contains("User")) 
       { 
        return RedirectToAction("Index", "User"); 
       } 
       else 
       { 
        return RedirectToAction("Index", "Home"); 
       } 
      } 

     } 
     // If we got this far, something failed, redisplay form 
     ModelState.AddModelError("", "The user name or password provided is incorrect."); 
     return View(model); 
    } 

И мои классы модели, как показано ниже:

общественного класса пользователя {

public int UserId { get; set; } 
    [Required] 
    public String Username { get; set; } 
    [Required] 
    public String EmailId { get; set; } 

    [Required] 
    public String Password { get; set; } 

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

    public Boolean IsActive { get; set; } 
    public DateTime DateCreated { get; set; } 


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

и

общественного класса Роли {

[Key] 
    public int RoleId { get; set; } 

    [Required] 
    public string RoleName { get; set; } 
    public string Description { get; set; } 

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

Проблема заключается в том, как, когда им пытаются войти в систему, используя свой логин и пароль, роли должны быть проверены из класса DatContext.

Но в то время мои Роли не входят в класс DataContext и дают ArgumentNullException.

ответ