我正在使用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
值。
答案 0 :(得分:1)
作为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);
答案 1 :(得分:0)
这是我找到的解决方案,但我觉得它应该比这更直接:
MembershipUser user = _provider.GetUser(userName, false);
MembershipUser properlyCasedUser = _provider.GetUser(user.ProviderUserKey, false);
答案 2 :(得分:0)
检查一下:http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=104933 ..这是从2004年开始,来自微软...: - (