Я создаю свой первый сайт ASP.NET MVC и стараюсь следить за развитием домена. Мой сайт - это сайт совместной работы по проекту, на котором пользователи могут быть привязаны к одному или нескольким проектам на сайте. Затем к проектам добавляются задачи, а пользователям с проектом можно назначить задачи. Таким образом, "Пользователь" является фундаментальной концепцией моей модели домена.
Мой план состоит в том, чтобы иметь объект модели "Пользователь", который содержит всю информацию о пользователе и может быть доступен через IUserRepository. Каждый пользователь может быть идентифицирован с помощью UserId. Хотя я не уверен в этом, если я хочу, чтобы UserId был строкой или целым числом.
Как мои объекты домена User и IUserRepository относятся к более административным функциям моего сайта, например, авторизации пользователей и разрешению им входа? Как интегрировать мою модель домена с другими аспектами ASP.NET, такими как HttpContext.User, HttpContext.Profile, пользовательский MemberShipProvider, настраиваемый ProfileProvider или пользовательский атрибут AuthorizeAttribute?
Должен ли я создать пользовательский MemberhipProvider и или ProfileProvider, который переносит мой IUserRepository? Хотя, я также могу предвидеть, почему я могу отделить информацию пользователя в моей модели домена от авторизации пользователя на моем сайте. Например, в будущем я могу переключиться на проверку подлинности Windows из проверки подлинности форм.
Было бы лучше не пытаться изобретать колесо и придерживаться стандартного SqlMembershipProvider, встроенного в ASP.NET? Каждая информация профиля пользователя будет храниться в модели домена (User/IUserRepository), но это не будет включать их пароль. Затем я бы использовал стандартный материал для членства в ASP.NET для обработки и авторизации пользователей? Поэтому там должен быть какой-то код, который знал бы, чтобы создать профиль для новых пользователей в IUserRepository, когда их учетная запись создана или когда они впервые вошли в систему.