我正在使用内置的“Internet应用程序”模板启动一个全新的ASP.NET MVC应用程序。在ASP.NET Forms身份验证中使用电子邮件地址而不是用户名
我该如何设置它以允许使用电子邮件地址登录&而不是用户名为&的密码?
我正在使用内置的“Internet应用程序”模板启动一个全新的ASP.NET MVC应用程序。在ASP.NET Forms身份验证中使用电子邮件地址而不是用户名
我该如何设置它以允许使用电子邮件地址登录&而不是用户名为&的密码?
解决方案与使用名称字段作为电子邮件地址一样简单吗?
如果您使用的是默认AccountModels
你不妨改变LogOnModel
删除UserName
并添加Email
,像这样:
public class LogOnModel {
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address")]
public string Email { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
的UserName
变化发生于Email
在LogOn
视图中。
最后,在你的AccountController
,改变LogOn
行动,从电子邮件地址获取用户名,完成SignIn
过程中,像这样:
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl) {
if (ModelState.IsValid) {
var userName = Membership.GetUserNameByEmail(model.Email);
if (MembershipService.ValidateUser(userName, model.Password)) {
FormsService.SignIn(userName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl)) {
return Redirect(returnUrl);
} else {
return RedirectToAction("Index", "Home");
}
} else {
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
我们有相同的要求,为此, 您应该创建自定义身份(CustomIdentity:IIdentity,ISerializable)
[Serializable]
public class CustomIdentity : IIdentity, ISerializable
并为其定义Name属性。
然后为用户名返还财产的电子邮件get方法
public string Name
{
get{ return Email; }
}
如果需要详细的,请对这个职位
是的,我没想到的是评论,但我想用用户保持name属性在网站上显示他们的名字,例如“欢迎用户名”,而不是“欢迎使用[email protected]”。 – 2011-01-14 17:12:19