代码之家  ›  专栏  ›  技术社区  ›  Mr. Flibble

ASP.NET MVC成员身份-使用了错误的用户名大小写

  •  0
  • Mr. Flibble  · 技术社区  · 14 年前

    当用户使用ASP.NET MVC项目中成员资格服务的默认实现登录时,他们将使用用户名登录,无论登录时使用何种大小写。

    var membershipUser = Membership.GetUser(model.UserName);
    var membershipUserName = Membership.GetUserNameByEmail(membershipUser .Email);
    FormsService.SignIn(membershipUserName, model.RememberMe);
    

    而不是默认实现:

    FormsService.SignIn(model.UserName, model.RememberMe);
    

    这似乎有点迂回。有没有更好的办法?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Sky Sanders    14 年前

    用户名在整个提供程序堆栈中不区分大小写,并且主体被设置为用于身份验证的任何值。

    如果需要强制区分大小写,则需要在描述时保护所有身份验证点,或者实现自定义主体/标识。

    我强烈推荐第一种,如果你选择第二种,我会为你祈祷

    祝你好运。

        2
  •  1
  •   Peter Mortensen venu    7 年前

    你可以一直坚持自己的观点。例如,如果这些是人们的真名(即使是一些奇怪的名字),你可以这样做:

     TextInfo culture = new CultureInfo("en-US", false).TextInfo;
      FormsService.SignIn(culture.ToTitleCase(model.UserName), model.RememberMe);