User.Identity.Name套管问题

时间:2009-08-11 21:32:22

标签: c# .net asp.net-mvc oracle asp.net-membership

我正在使用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 个答案:

答案 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年开始,来自微软...: - (