2009-08-11 6 views
3

Ich benutze ASP.NET MVC 1.0 zusammen mit den Oracle ASP.NET-Mitgliedschaftsanbietern. Ich stoße auf ein Problem mit der Groß- und Kleinschreibung.User.Identity.Name Gehäuse Problem

Wenn sich ein Benutzer in das System, scheint es, dass die Mitgliedschaft Anbieter setzt den User.Identity.Name Wert auf das, was der Benutzer eingegeben. Das heißt, wenn ich den Benutzer als Foo erstellt und der Benutzer anmeldet als fOo dann überall, wo ich Verwenden Sie User.Identity.Name auf meiner Website, es wird fOo angezeigt.

Gibt es eine einfache Möglichkeit, dies zu umgehen? Ich habe versucht,

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

aber das gibt mir genau die gleichen fOo Wert.

+0

ich glaube, Sie haben gerade ein providerspezifische Implementierung Detail gefunden cdmckay Lösung. ist das auf ly out out kann ich mir vorstellen. – Ruben

Antwort

1

Als ein Followup auf cdmckay, wenn Sie auch richtig, den User.Identity.Name haben wollen würden verwenden,

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

Es scheint albern, dass sie nicht nur einen '.UserName = Foo 'und einen' .LoginUserName = fOo' oder etwas in diesem Sinne haben. – cdmckay

0

Hier ist eine Lösung, die ich gefunden, aber ich fühle mich wie es als die direkteren sein sollte:

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