Как настроить простого поставщика членства для работы с моей собственной базой данных ASP.NET mvc 4

Сейчас я изучаю ASP.NET MVC 4. Буду рад, если кто-нибудь поможет, ответив на мой вопрос.

Строю академический проект «Система управления и поддержки проектов». Я разработал свою собственную базу данных, у меня есть собственные таблицы для пользователей в моей базе данных (два типа пользователей: сотрудник, который будет выполнять задачи, и клиент, который назначает / нанимает задачи), я собирался создать нового поставщика членства, но Я понял, что «изобретать велосипед - пустая трата времени».

Теперь я создаю модель членства в ASP.NET MVC4, используя SimpleMembership (это будущее сервисов членства для приложений MVC). Она предоставляет более краткий поставщик членства для платформы ASP.NET и дополнительно поддерживает OAuth.

1. Я создал готовое интернет-приложение ASP.NET MVC 4 для настройки логики входа, регистрации и управления пользователями для ведения таблицы профилей пользователей. Я добавил три роли: администратор, сотрудник, клиент.

Просматривая этот пост в блоге, я могу настроить регистрацию http://blog.longle.net/2012/09/25/seeding-users-and-roles-with-mvc4-simplemembershipprovider-simpleroleprovider-ef5-codefirst-and-custom-user-properties/

2- Теперь я работаю над синхронизацией этой таблицы с таблицами пользователей, которые у меня есть в моей собственной базе данных. Принимая во внимание, что я добавил еще одно поле «Тип учетной записи», предлагающее пользователю во время регистрации создать конкретный профиль.

Любая помощь очень ценится.

Ваше здоровье


person ImnotaGeek    schedule 03.04.2013    source источник
comment
Взгляните на этот стартовый комплект: github.com/kriasoft/site-sdk В нем есть индивидуальное решение для членства   -  person Grief Coder    schedule 04.05.2013


Ответы (2)


с SimpleMembership есть 2 способа хранения и использования этой информации для аутентификации.

  1. вы можете использовать таблицу по умолчанию (UserProfiles), которая находится в базе данных, на которую указывает строка «DefaultConnection».

  2. вы можете использовать ВАШУ базу данных и таблицу в ней для замены таблицы UserProfiles по умолчанию.

вариант 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. добавить дополнительные поля в класс RegisterModel в AccountModels

    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. перестроить и обновить базу данных, если ожидаются какие-либо изменения (или добавить миграции).

person manoj sharma    schedule 09.04.2013
comment
+1 это то, чего, похоже, не хватает в документации ASP.NET - person jingtao; 12.09.2013

Следуйте ответ на аналогичный вопрос по ссылке ниже. Если у вас есть еще вопросы, дайте мне знать.

Аналогичный вопрос с ответом

Обновить

После прочтения вашего первого комментария, похоже, вам нужно сначала понять, что такое MVC, прежде чем касаться SimpleMembership. попробуйте следующие ссылки.

википедия

w3schools

MSDN

http://www.asp.net/mvc

person Komengem    schedule 03.04.2013
comment
Я просматривал ту же статью час назад. Не получается. Из какой части проекта мне следует сохранить профиль в моей базе данных (я имею в виду, какой класс мне следует использовать для внедрения профиля из профиля пользователя в мою собственную базу данных)! - person ImnotaGeek; 03.04.2013
comment
Вы действительно не задавали вопрос, я дал вам ответ, основанный на заголовке вашего сообщения. В любом случае, эта ссылка должна работать, поделитесь своим кодом, возможно, таким образом я смогу предоставить вам конкретное решение. Судя по его звучанию, вам нужно создать связь между UserProfile и вашим ExtednedUser, например. Наемный рабочий - person Komengem; 03.04.2013
comment
Спасибо ! Я сейчас нахожусь на этой стадии. Все, что я создал, похоже на этот код, опубликованный здесь. blog.longle.net/2012/09/25/ - person ImnotaGeek; 03.04.2013
comment
@ImnotaGeek Эта ссылка, по которой вы переходите, не поможет вам, если вы хотите взять на себя управление и включить SimpleMembership в свою базу данных. взгляните на эту ссылку еще раз и задайте вопросы, где вы застряли blog.spontaneouspublicity.com/ - person Komengem; 03.04.2013
comment
Спасибо ! Я просмотрел статью; Я успешно применил все шаги. Следует ли мне вставлять данные после регистрации (я не очень хорошо разбираюсь в MVC), какой класс мне следует изменить! - person ImnotaGeek; 03.04.2013
comment
@ImnotaGeek Прочтите ссылки, которые я разместил в обновленном ответе. Я ничем не могу помочь, если вы не понимаете, что делает архитектура модель-представление-контроллер (MVC). - person Komengem; 03.04.2013
comment
Спасибо ! Думаю, я нашел то, что искал: http://stackoverflow.com/questions/15177556/customizing-simplemembership-in-mvc-4 - person ImnotaGeek; 03.04.2013