2012-05-13 2 views
0

Я использую членство .net, но все, что я работаю, хочу быть обычным.Пользовательский .NET Membership

Что я хочу сделать, это:

  1. Создание пользовательских данных таблицы [Пользователи] с пользовательскими полями
  2. Импорт текущих данных в новую таблицу
  3. Создание пользовательских классов и функций обо всем, что мне нужно для [Пользователи]

I`m не уверен, как .net работает членство, но, возможно, отправить зашифрованные кук тогда, когда я использую

var user = Membership.GetUser(); 

.Net расшифровывать файлы cookie пользователя и знать, какой пользователь.

Вот скриншот, как .net создать Идент.польз печенье http://prntscr.com/97043

Но пользователя каждый раз, когда выхода из-входа, это значение отличается.

Так что я хочу знать:

  1. Допустим, я хочу, чтобы сделать 100% пользовательский веб-сайт, как я могу сделать пользовательский логин?
  2. Можете ли вы рассказать мне обо всех проблемах безопасности, связанных с получением пользовательского членства?
+0

вы когда-нибудь видели мой ответ на эту же тему? http://stackoverflow.com/questions/5701673/custom-membershipprovider-in-net-4-0/5702000#5702000 – balexandre

ответ

0

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

Если вы действительно хотите, чтобы начать с нуля на внутреннем интерфейсе, вот некоторые вопросы, чтобы отметить:

  • Не храните пароли в незашифрованном виде в любом месте; хэш их.
  • Salt your passwords
  • Вход & монитор пароль сбрасывает

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

Что касается интерфейсного компонента, MSDN также описывает how forms authentication works, но лично я бы не стал связываться с вашей собственной схемой файлов cookie. Даже большие пользовательские реализации, такие как Oauth для asp.net, все еще используют формы. Выезд http://msdn.microsoft.com/en-us/library/system.web.security.sqlroleprovider.aspx

1

Ничего из этого не требуется. Вы можете создать свою собственную таблицу пользователей без необходимости изменять что-либо, связанное с членством или аутентификацией. Вы просто убедитесь, что таблица ваших пользователей имеет столбец AspNetUserID или аналогичный тип uniqueidentifier (guid).Вы помещаете ProviderUserKey из MemberhipUser в эту таблицу и просматриваете любого пользователя в таблице Users, просто получив ProviderUserKey из членства.

Так, например, вы можете сделать это:

var userid = Membership.GetUser().ProviderUserKey; 

// lookup your record in users based on userid above 
Смежные вопросы