Во-первых, этот ответ является не строго ответом MVC, а ответом ASP.NET. Тот факт, что ваш сайт является MVC, в данном случае не имеет отношения к решению проблемы.
Хм. Я не совсем уверен, как вы обращаетесь с вашими пользователями в вашей системе, но похоже, что вы используете (очень злой) asp.net membership provider
, который поставляется из коробки с .net. На это намекает тот факт, что вы сказали
- aspnet_Users.UserID
- UserID является уникальным идентификатором (читай: GUID).
В системе аутентификации форм по умолчанию, которая использует FormsIdentity по умолчанию, у нее есть только одно свойство с именем Имя (как вы правильно заметили). Это означает, что у него есть только одно значение, где размещать уникальную пользовательскую информацию. В вашем случае вы вводите Имя / Имя пользователя / Отображаемое имя в свойство Name
. Я предполагаю, что это имя является их отображаемым именем, и оно уникально. Какую бы ценность вы здесь ни вкладывали, она ДОЛЖНА БЫТЬ УНИКАЛЬНОЙ .
Отсюда вы можете получить руководство пользователя.
Проверьте это.
using System.Web.Security;
....
// NOTE: This is a static method .. which makes things easier to use.
MembershipUser user = Membership.GetUser(User.Identity.Name);
if (user == null)
{
throw new InvalidOperationException("User [" +
User.Identity.Name + " ] not found.");
}
// Do whatever u want with the unique identifier.
Guid guid = (Guid)user.ProviderUserKey;
Итак, каждый раз, когда вы хотите получить информацию о пользователе, вам нужно извлечь ее из базы данных, используя статический метод, описанный выше.
Узнайте все о классе членства и членстве в классе на MSDN.
Бонусный ответ / предложение
Таким образом, я бы кэшировал этот результат, чтобы вам больше не приходилось нажимать на базу данных.
... cont from above....
Guid guid = (Guid)user.ProviderUserKey;
Cache.Add(User.Identity.Name, user.UserID); // Key: Username; Value: Guid.
В противном случае вы можете создать свой собственный класс Identity (который наследуется от IIdentity ) и добавить свои собственные пользовательские свойства, например UserID
. Затем, всякий раз, когда вы аутентифицируетесь (а также при каждом запросе), вы можете установить это значение. В любом случае, это сложное решение, поэтому займитесь кешированием прямо сейчас.
НТН