User.Identity.Name проблема с корпусом - PullRequest
3 голосов
/ 12 августа 2009

Я использую ASP.NET MVC 1.0 вместе с поставщиками членства Oracle ASP.NET. У меня проблема с чувствительностью к регистру.

Когда пользователь входит в систему, кажется, что поставщик членства устанавливает значение User.Identity.Name для того, что пользователь ввел. То есть, если я создал пользователя как Foo, а пользователь вошел как fOo тогда везде, где я использую User.Identity.Name на моем сайте, будет отображаться fOo.

Есть ли простой способ обойти это? Я пытался

var user = Membership.GetUser(User.Identity.Name).UserName;

но это дает мне точно такое же fOo значение.

Ответы [ 3 ]

1 голос
/ 12 августа 2009

В качестве дополнения к cdmckay, если вы хотите, чтобы и User.Identity.Name также был корректным, используйте

IIdentity newIdentity = new GenericIdentity(properlyCasedUser.UserName);
if (User is RolePrincipal)
    User = new RolePrincipal(((RolePrincipal)User).ProviderName, newIdentity, ((RolePrincipal)User).ToEncryptedTicket());
else
    User = new GenericPrincipal(newIdentity, null);
0 голосов
/ 24 сентября 2009

Проверьте это: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=104933 .. А это с 2004 года, давай Microsoft ...: - (

0 голосов
/ 12 августа 2009

Вот решение, которое я нашел, но я чувствую, что оно должно быть более прямым, чем это:

MembershipUser user = _provider.GetUser(userName, false);
MembershipUser properlyCasedUser = _provider.GetUser(user.ProviderUserKey, false);
...