Настройка авторизации в базе данных с использованием Entity Framework - PullRequest
0 голосов
/ 30 апреля 2019

Я работаю над уникальным домашним заданием веб-страницы для покупок, для которого я пытаюсь настроить базу данных. Моя проблема в том, как установить роли в моей базе данных. Я хочу иметь две роли: клиент и администратор. Я хочу, чтобы мой клиент мог зарегистрироваться, войти в систему, подтвердить свою электронную почту, добавить товар в корзину и завершить покупку. Роль администратора должна иметь возможность добавлять, редактировать и удалять статьи, добавлять, редактировать и удалять клиентов, а также публиковать продажи. Мой вопрос: что было бы самым простым рабочим решением, чтобы установить роли и ограничения для этой ситуации?

Я только начал этот проект, поэтому мне нечего показывать, но я искал эту тему в Интернете и нашел несколько решений, которые не были хорошо объяснены или содержали технологии, не подходящие для моего проекта. Я работаю с C # и ASP.net, используя стандартные MVC и Entity Framework, предоставляемые Visual Studio 2017 IDE. Вот две модели, которые я создал и собираюсь использовать. Я использовал MVC5 для генерации представлений и контроллеров для этих моделей, добавляя их в контекст и базу данных.

  public class Administrator
{
    [Key]
    public int AId { get; set; }
    public string AName { get; set; }
    public string ALastName { get; set; }
    public string AEmail { get; set; }
    public string APassword { get; set; }
}

 public class Costumer
{
    [Key]
    public int CId { get; set; }
    public string CName { get; set; }
    public string CLastName { get; set; }
    public string CEmail { get; set; }
    public string CPassword { get; set; }
    public string CAdress { get; set; }
    public string CGender { get; set; }
    public DateTime CBirthDate { get; set; }
}

Мне было предложено создать отдельную таблицу ролей для хранения roleId и roleName и попытаться установить роли путем подключения и сопоставления roleId с AId и CId. Пока что не удачно

1 Ответ

0 голосов
/ 30 апреля 2019

Вы можете использовать аутентификацию на основе ролей Identity Framework или сделать это по-своему. Вам следует немного изменить модель базы данных. Вот что вы можете сделать,

public class Actions{
   [Key]
   public int ActionId {get; set;}
   public string Action {get; set;}    
}

public class Users{
   [Key]
   public int UserId { get; set; }
   public string Name { get; set; }
   public string LastName { get; set; }
   public string Email { get; set; }
   public string Password { get; set; }
   public string Adress { get; set; }
   public string Gender { get; set; }
   public Nullable<DateTime > BirthDate { get; set; }
}

public class Roles{
   [Key]
   public int RoleId {get; set;}
   public string RoleName {get; set;}
   public string RolePermissions {get; set;} // You will store action IDs in "1,2,4,5"  this format
}

public class UserRole{
   [Key]
   public int Id {get; set;}
   public int UserId {get; set;}
   public int RoleId {get; set;}
}

Вы должны хранить роли в таблице Role, поскольку в будущем вам может потребоваться добавить больше ролей и управлять пользователями в одной таблице. Таблица UserRole будет содержать все ваши роли, назначенные конкретному пользователю. Каждая роль будет иметь набор разрешений для действий. Эти действия будут сохранены в таблице Actions и сохранены в виде строки с запятой в столбце RolePermissions.

Перед каждой операцией необходимо настроить простую функцию проверки, имеет ли этот пользователь право на выполнение этой операции? Это будет простая проверка внедрения перед каждой операцией базы данных.

Вы можете сохранить текущее разрешение пользователя в Session во время входа в систему и использовать его впоследствии.

Я думаю, что это поможет, когда ваше приложение будет расти и решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...