如何使用自定义MembershipProvider覆盖Identity?

时间:2014-04-04 11:30:23

标签: c# asp.net-mvc-4 forms-authentication

所以我在使用FormsAuthentication的ASP.NET MVC4应用程序中编写了自定义MembershipProvider。提供商允许用户通过电话号码,电子邮件和用户名登录。问题是我希望将HttpContext.Current.User.Identity.Name设置为用户名,即使用户通过电话号码或电子邮件登录也是如此。它不是。

我已尝试在MembershipProvider中覆盖MembershipUser GetUser(string, bool)以返回MembershipUser - 对象,并在所有三种情况下将Name设置为用户名,但它似乎并不是物。身份名称仍设置为用户输入的任何登录凭据。

任何达到我想要的方式?

1 个答案:

答案 0 :(得分:1)

HttpContext.Current.User.Identity.Name设置为存储在表单身份验证cookie中的用户名。

创建表单身份验证cookie的代码(通常是在处理登录的Controller的POST操作中调用FormsAuthentication.SetAuthCookieFormsAuthentication.RedirectFromLoginPage)应提供您要使用的用户名,而不管用户是否提供了电话号码,电子邮件或用户名。