2015-02-19 26 views
5

Tôi muốn thêm một kiểm tra rằng mật khẩu không chứa tên người dùng trong khung ASP.NET Identity.ASP.NET Identity Custom PasswordValidator kiểm tra tên người dùng

Việc triển khai Trình xác thực mật khẩu tùy chỉnh sẽ thực hiện công việc tốt, nhưng làm cách nào tôi có thể truy cập tên người dùng?

public class CustomPasswordValidator : PasswordValidator 
{ 
    public override async Task<IdentityResult> ValidateAsync(string password) 
    { 
     var result = await base.ValidateAsync(password); 

     //How to access username here 

     return result; 
    } 
} 
+0

Người dùng đã đăng nhập tại thời điểm này hay điều này cho người dùng mới? Nếu sau này, nó có thể không được, vì 'User.Identity' sẽ không được thiết lập cho đến khi người dùng đăng nhập. – stuartd

+0

@stuartd: UserManager sẽ xác thực mật khẩu bằng PasswordValidator giống nhau trong khi tạo người dùng hoặc thay đổi mật khẩu cho người dùng hiện tại –

+0

Bất kỳ niềm vui nào? @Niko Bạn đã tìm ra điều này chưa? –

Trả lời

0

Bạn có thể có một cái nhìn tại Fluent Validation library

Nó có một validator ngữ (Phải) đó là hoàn hảo cho kịch bản của mình. Vì vậy, quy tắc xác thực của bạn sẽ trông giống như:

RuleFor(model => model.Password) 
     .Must((model, username) => !model.Password.Contains(username)) 
+0

Cảm ơn bạn đã trả lời nhưng mục tiêu là ** không ** đặt xác thực này trong mô hình. Tôi muốn tập trung kiểm tra này trong Usermanager với tất cả các yêu cầu mật khẩu và người dùng khác. –

Các vấn đề liên quan