Модель безопасности и существующая база данных

Я создал базу данных с кодом сначала и DbContext.

Однако это находится отдельно от базы данных модели безопасности на новом сайте MVC 4.

Мой вопрос заключается в том, как мне объединить мою существующую базу данных с моделью безопасности или их следует хранить отдельно по уважительной причине.

Например, это лучшее решение http://blog.spontaneouspublicity.com/включая-asp-net-simple-membership-tables-as-part-of-your-entity-framework-model

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

Или есть альтернативный способ сделать это.


person Matthew Chambers    schedule 18.11.2012    source источник


Ответы (1)


По этой причине мне нравятся новые MVC и Simplemembership Provider. Вы можете очень легко комбинировать свои модели с моделями учетных записей asp.net.

Когда вы используете интернет-шаблон по умолчанию, он создает контекст с именем UsersContext. Чтобы сделать что-то простое, например добавить дополнительные поля в объект UserProfile для отслеживания в базе данных, вам нужно сделать 3 простых вещи.

  1. Добавьте свойства в модель (в модели учетных записей, если вы используете шаблон по умолчанию)
  2. В действии регистрации на контроллере учетных записей добавьте новые поля IE:

    public ActionResult Register(RegisterModel model)
    {
        if (ModelState.IsValid)
        {
            var db = new UsersContext();
            // Attempt to register the user
            try
            {
                WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { FirstName = model.FirstName, LastName = model.LastName, Address = model.Address, Company = model.Company, Phone = model.Phone, Country = model.Country, City = model.City, State = model.State, Zip = model.Zip });            
                WebSecurity.Login(model.UserName, model.Password);
    
                return RedirectToAction("Index", "Dashboard");
            }
            catch (MembershipCreateUserException e)
            {
                ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
            }
        }
    
        // If we got this far, something failed, redisplay form
        return View(model);
    }
    

Обратите внимание на новое ключевое слово, где я взял значения из переданной модели и просто сопоставил их с моделью. (привязка модели может работать или не работать здесь, но я еще не проверял это)

3) Измените вид регистра и модель, чтобы передать всю необходимую информацию.

Я чуть не заплакал, когда это сработало безупречно в первый раз без каких-либо странных ошибок.

Удачи

person timlint    schedule 03.01.2013