2015-03-04 24 views
5

Tôi đang sử dụng danh tính trong dự án MVC của mình và tất cả đều tốt đẹp. Ngoại trừ thực tế rằng biểu mẫu đăng ký người dùng mới có một số yêu cầu mật khẩu điên khùngXác thực mật khẩu nhận dạng ASP.NET

Mật khẩu phải có ít nhất một ký tự không phải chữ hoặc số. Mật khẩu phải có ít nhất một chữ số ('0' - '9'). Mật khẩu phải có ít nhất một chữ hoa ('A' - 'Z').

Và đây là mô hình đăng ký

public class RegisterViewModel 
{ 
    [Required] 
    [StringLength(50, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 2)] 
    [Display(Name = "First Name")] 
    public string FirstName { get; set; } 

    [Required] 
    [StringLength(50, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 2)] 
    [Display(Name = "Last Name")] 
    public string LastName { get; set; } 

    [Required] 
    [EmailAddress] 
    [Display(Name = "Email")] 
    public string Email { get; set; } 

    [Required] 
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
    [DataType(DataType.Password)] 
    [Display(Name = "Passord")] 
    public string Password { get; set; } 

    [DataType(DataType.Password)] 
    [Display(Name = "Repeat Password")] 
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 
    public string ConfirmPassword { get; set; } 
} 

điều khiển tài khoản

// POST: /Account/Register 
    [HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Register(RegisterViewModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; 
      var result = await UserManager.CreateAsync(user, model.Password); 
      if (result.Succeeded) 
      { 
       await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false); 
       return RedirectToAction("Index", "Home"); 
      } 
      AddErrors(result); 
     } 

     // If we got this far, something failed, redisplay form 
     return View(model); 
    } 

tôi thấy yêu cầu chiều dài cho mật khẩu, nhưng tôi không hiểu làm thế nào để thay đổi xác thực mật khẩu vì vậy tôi không cần ký tự không phải chữ cái hoặc chữ số.

Tất cả trợ giúp đánh giá cao, cảm ơn bạn.

Phần thưởng: {0} và {2} có nghĩa là gì? Cảm ơn bạn.

+0

xác thực đó có thể nằm trong 'AccountController' của bạn ở đâu đó. – DLeh

+0

Tìm kiếm dự án của bạn cho "RequireNonLetterOrDigit" và xem [here] (http://stackoverflow.com/questions/24796454/how-to-change-password-validation-in-asp-net-mvc-identity-2?rq= 1). Tiền thưởng: đó là một chuỗi định dạng có hai phần giữ chỗ cho thông số 0 và 2 được truyền cho định dạng đó. – Jasen

+0

Cảm ơn các bạn. –

Trả lời

11

Trong Startup.cs nơi bạn thêm dịch vụ nhận dạng bạn có thể thêm tùy chọn để xác nhận mật khẩu:

services.AddIdentity<ApplicationUser, IdentityRole>(Configuration, 
    options => 
     options.Password = new PasswordOptions 
     { 
      RequireDigit = true, 
      RequiredLength = 6, 
      RequireLowercase = true, 
      RequireUppercase = true, 
      RequireNonLetterOrDigit = false 
     }) 
[...]; 
+0

Đây là những gì tôi cần bằng cách sử dụng mẫu dự án Ứng dụng Web ASP.NET (.NET Core) với Tài khoản Người dùng Cá nhân. – theguy

+0

Tôi đã thay đổi điều này - không có hiệu lực nó vẫn thực thi các yêu cầu mật khẩu giống nhau – niico

5

Nếu bạn đang sử dụng một trong những mẫu ứng dụng ASP.NET và đã chọn xác thực là 'User Accounts cá nhân' bạn sẽ tìm thấy các tùy chọn mật khẩu trong một tệp IdentityConfig.cs trong thư mục App_Start trong ứng dụng của bạn. Tại đây, bạn có thể thay đổi các tùy chọn mật khẩu như sau để tắt tất cả yêu cầu ngoại trừ độ dài mật khẩu:

manager.PasswordValidator = new PasswordValidator 
     { 
      RequiredLength = 6, 
      RequireNonLetterOrDigit = false, 
      RequireDigit = false, 
      RequireLowercase = false, 
      RequireUppercase = false, 
     }; 
Các vấn đề liên quan