[英]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.