我正在尝试在asp.net mvc4 c#中开发一个小型Web应用程序。
我使用Visual Studio Web应用程序创建,其中包含已经过功能的身份验证。
以下是模型:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
[Display(Name = "Nom d'utilisateur")]
public string UserName { get; set; }
[Display(Name = "Email")]
public string Email { get; set; }
}
public class LoginModel
{
[Required]
[Display(Name = "Nom d'utilisateur")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Mot de passe")]
public string Password { get; set; }
[Display(Name = "Mémoriser le mot de passe ?")]
public bool RememberMe { get; set; }
}
public class RegisterModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
//[Required]
[StringLength(100, ErrorMessage = "La chaîne {0} doit comporter au moins {2} caractères.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "Le mot de passe et le mot de passe de confirmation ne correspondent pas.")]
public string ConfirmPassword { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email")]
public string Email { get; set; }
}
这是控制器:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
UsersContext db = new UsersContext();
if (ModelState.IsValid)
{
//Some code here
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new {Email = model.Email});
WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
//Some code here
}
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (!User.Identity.IsAuthenticated)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "Le nom d'utilisateur ou le mot de passe rentré est incorrect.");
}
}
else
{
return View(model);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
因此,当用户注册时,他会输入他的NAME,他的电子邮件和密码。
例如,假设我注册。
NAME:Myname
电子邮件:mystartup@sanandreas.us
密码:******
要登录,我应该提供我在注册时提供的相同信息。所以这里:
NAME:Myname
密码:******
我的问题:
要登录,当我输入NAME:Myname和正确的密码时,验证成功,但是当我输入“Myname”或“mYname”或......或MYNAME身份验证也成功时。我只是想知道为什么? (我已经解决了这个问题,我只想知道原因。)当我们用Visual Studio启动Web应用程序时,对每个人来说都是一样的吗?
请注意,我创建的用户(user:Myname)是表UserProfiles的唯一用户。
谢谢。