繁体   English   中英

User.Identity.Name套管问题

[英]User.Identity.Name casing issue

我正在使用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值。

作为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);

这是我找到的解决方案,但我觉得它应该比这更直接:

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

看看这个: http : //connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx ?FeedbackID=104933 ..这是从2004年开始,来自微软... :-(

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM