2010-11-09 3 views
5

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

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

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

Я был бы очень признателен некоторые указатели на нужные ресурсы, и/или наилучшей практики с ASP.NET

ответ

3

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

Также большая серия статей (18 статей !!!) от Скотта Митчелла в 4GuysFromRolla.

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

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

8

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

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

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

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

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

  1. Создать новую таблицу, т.е. UserProfiles
  2. Добавить uniqueidentifier столбец как ваш первичный ключ и добавьте внешний ключ в таблицу aspnet_Users
  3. Добавьте любые другие поля, которые вы хотите сохранить (Телефон, Адрес, Пол и т. Д.)
  4. Если вы используете LINQ-to-SQL или Entity Framework, вы можете просто перетащить нужные вам таблицы в конструктор, и вы будете готовы запросить таблицы Membership.

Вот небольшой пример по использованию

Добавить этот фрагмент кода в репозиторий, ответственного за информацию профиля/счета.

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! 

И это довольно много его!

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

0

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

Смежные вопросы