ASP MVC профили пользователей - PullRequest
6 голосов
/ 09 ноября 2010

Я делал MVC в прошлом, но я новичок в ASP и ASP MVC. Мне очень нравится та простота, которую ASP MVC предоставляет мне до сих пор, но мне сложно понять, как получить больший контроль над пользователями. По умолчанию MVC предоставляет минимальную форму регистрации пользователя. Я немного осмотрелся, но у меня остались два вопроса:

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

  2. Это приводит к другому вопросу: как расширить Пользователь? Я читал на Профили, но я все еще запутался в нескольких вещах. Как мне подготовить профиль и связать его с пользователем? Что служит внешним ключом? И в моих контроллерах, как я могу получить доступ к различным частям пользователя, таким как имя пользователя, электронная почта, или даже из материала профиля, такого как имя, фамилия (хотя я думаю, однажды, когда у меня есть база данных профиля и база данных пользователя локально, я могу запустить sql команды для получения данных)

Буду очень признателен за некоторые ссылки на правильные ресурсы и / или лучшие практики с ASP.NET

Ответы [ 3 ]

8 голосов
/ 10 ноября 2010

Начну с прочтения этой официальной статьи Microsoft о расширении API членства в ASP.NET.В нем говорится о создании дополнительных таблиц для хранения дополнительной информации о пользователях.

База данных членов

  1. Если у вас есть существующая база данных, в которой хранятся все ваши другую информацию о сайте, вы можете запустить инструмент aspnet_regsql.exe для создания необходимых пользовательских таблиц.Затем вам нужно будет изменить ваш web.config и добавить SqlMembershipProvider вместе со строкой подключения.
  2. Если вы создаете новый проект и у вас нет базы данных, начните с нового проекта MVC, который ужеимеет членство включено.Ваша база данных будет создана в папке App_Data при первом использовании, и вы можете взять ее и прикрепить к серверу SQL / SQLEXPRESS.Тогда нужно просто изменить строку подключения, чтобы использовать сервер БД, а не локальный файл.

Создание дополнительных таблиц

Эта часть на самом деле довольнопростой и состоит из нескольких коротких шагов:

  1. Создайте новую таблицу, т.е. UserProfiles
  2. Добавьте столбец uniqueidentifier в качестве первичного ключа и добавьте внешний ключ в aspnet_Userstable
  3. Добавьте любые другие поля, которые вы хотите сохранить (Телефон, Адрес, Пол и т. д.)
  4. Если вы используете 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 и вы также можете создать класс, который будет возвращать необходимую информацию о пользователе, реализовывать кеширование и т. д.

3 голосов
/ 09 ноября 2010

Я бы начал отсюда:

Также замечательная серия статей (18 статей !!!) написана Скоттом Митчеллом по адресу 4GuysFromRolla .

Модель членства в ASP.NET разработана для создания подключаемой архитектуры.Вы можете написать собственную реализацию MembershipProvider, которая наилучшим образом соответствует вашим потребностям.

Даже если большинство примеров, которые вы найдете в сети, касаются веб-форм ASP.NET, различия только при использовании с MVC очень незначительны.

0 голосов
/ 27 августа 2012

Если вы все еще ищете понимание этого, я просто наткнулся на тот факт, что на сайтах MVC 4 WebPages есть провайдер, называемый провайдером SimpleMembership. Это дает больше контроля разработчику информации о пользователях, ролях и членстве, хранящейся на веб-сайтах. Больше здесь: http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx

...