Я смотрел на привязку моей собственной таблицы пользователя к членству asp.net, сохраняя мой userid (int) в области UserData файла cookie аутентификации (Storing and accessing a legacy UserID in asp.net membership).Почему членство в asp.net UserID не хранится в билете аутентификации?
Как мое приложение для моего собственного использования, а также для того, чтобы помочь мне учиться asp/C#, я подумал, что было бы неплохо сравнить усилия по настройке членства, чтобы соответствовать моей базе данных с обратным (т.е. использовать членство вне поле и отредактируйте мою базу данных соответственно).
Если я конвертирую свою базу данных для использования guid (uniqueidentifier) UserIDs как внешние ключи во всех таблицах, связанных с моими пользователями, тогда мне все же нужен способ сделать UserID легко доступным для моего приложения. Принятый способ получить UserID, кажется, вот так:
Guid userID = (Guid)Membership.GetUser().ProviderUserKey;
Теперь, если я правильно понимаю, это включает в себя чтение из базы данных. Возможно, я придирчива, но, по-видимому, это немного лишнее по каждому запросу. Я был бы склонен поставить его в билет. Я не вижу никакой проблемы с помещением значения PK в билет (guid или int). Существует ли риск для безопасности? Членство, кажется, счастливо, используя UserName как ключ, а не суррогат. Что вызывает вопрос - почему они не поставили UserID в билет?
Вы можете использовать пользовательский поставщик членства, который связывает ваши идентификаторы с идентификаторами GUID, например: http://stackoverflow.com/questions/6532418/how-to-combine-using-membership-api-with -own -соответствующие данные/6532611 # 6532611 –
@TimSchmelter - Это, по сути, то, что я делаю. Мне просто интересно, почему идентификатор пользователя с готовым членством не сохраняется в билете проверки подлинности. Они забыли или есть веская причина, чтобы не поместить его туда. – Fruitbat