User.Identity.Name大小写问题

发布于 2024-08-01 18:43:53 字数 460 浏览 5 评论 0原文

我将 ASP.NET MVC 1.0 与 Oracle ASP.NET 成员资格提供程序一起使用。 我遇到了区分大小写的问题。

当用户登录系统时,会员资格提供程序似乎将 User.Identity.Name 值设置为用户输入的任何内容。也就是说,如果我将用户创建为 Foo< /code> 并且用户以 fOo 身份登录,然后在我的网站上使用 User.Identity.Name 的任何地方,它都会显示 fOo

有没有一种简单的方法可以解决这个问题? 我尝试过,

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

但这给了我完全相同的 fOo 值。

I'm using ASP.NET MVC 1.0 along with the Oracle ASP.NET Membership Providers. I'm running into a case sensitivity problem.

When a user logs into the system, it appears that the Membership provider sets the User.Identity.Name value to whatever the user typed in. That is, if I created the user as Foo and the user logs in as fOo then everywhere where I use User.Identity.Name on my site, it'll show fOo.

Is there an easy way to work around this? I tried

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

but that gives me the exact same fOo value.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

雅心素梦 2024-08-08 18:43:53

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

As a followup to cdmckay, if you'd want to have the User.Identity.Name correct as well, use

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);
煮酒 2024-08-08 18:43:53

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

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

Here's a solution I found but I feel like it should be more direct than this:

MembershipUser user = _provider.GetUser(userName, false);
MembershipUser properlyCasedUser = _provider.GetUser(user.ProviderUserKey, false);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文