Начну с прочтения этой официальной статьи Microsoft о расширении API членства в ASP.NET.В нем говорится о создании дополнительных таблиц для хранения дополнительной информации о пользователях.
База данных членов
- Если у вас есть существующая база данных, в которой хранятся все ваши другую информацию о сайте, вы можете запустить инструмент aspnet_regsql.exe для создания необходимых пользовательских таблиц.Затем вам нужно будет изменить ваш web.config и добавить SqlMembershipProvider вместе со строкой подключения.
- Если вы создаете новый проект и у вас нет базы данных, начните с нового проекта MVC, который ужеимеет членство включено.Ваша база данных будет создана в папке App_Data при первом использовании, и вы можете взять ее и прикрепить к серверу SQL / SQLEXPRESS.Тогда нужно просто изменить строку подключения, чтобы использовать сервер БД, а не локальный файл.
Создание дополнительных таблиц
Эта часть на самом деле довольнопростой и состоит из нескольких коротких шагов:
- Создайте новую таблицу, т.е. UserProfiles
- Добавьте столбец
uniqueidentifier
в качестве первичного ключа и добавьте внешний ключ в aspnet_Userstable - Добавьте любые другие поля, которые вы хотите сохранить (Телефон, Адрес, Пол и т. д.)
- Если вы используете LINQ-to-SQL или Entity Framework, вы можете просто перетащитьТаблицы, которые вам нужны, в конструктор, и вы будете готовы запросить таблицы членства.
Вот небольшой пример использования
Добавитьэтот фрагмент к вашему хранилищу, ответственный за информацию о профиле / учетной записи.
public aspnet_User GetUser()
{
MembershipUser user = Membership.GetUser();
return db.aspnet_Users.SingleOrDefault(u => u.UserId == user.ProviderUserKey);
}
Затем внутри ваших моделей вы можете получить пользователя и получить доступ к другой информации, хранящейся в вашей таблице UserProfiles.
AccountRepo accountRepo = new AccountRepo();
aspnet_User user = accountRepo.GetUser();
string Address = user.UserProfile.Address; // bingo!
И это почти все!
Это, очевидно, простой пример, и вы должны проверить, является ли пользователь null и вы также можете создать класс, который будет возвращать необходимую информацию о пользователе, реализовывать кеширование и т. д.