Tôi đang làm việc để triển khai nhà cung cấp tư cách thành viên tùy chỉnh hoạt động dựa trên lược đồ hiện có trong cơ sở dữ liệu của tôi và có một vài suy nghĩ/câu hỏi.Kiểm soát đăng nhập và nhà cung cấp tư cách thành viên tùy chỉnh
Điều khiển đăng nhập sẽ tự động gọi phương thức ValidateUser của nhà cung cấp thành viên, cho dù tôi triển khai nhà cung cấp thì điều duy nhất mà điều khiển đăng nhập quan tâm là giá trị bool được trả về bằng phương pháp này. Những gì tôi đang bối rối là có thể có nhiều lý do tại sao một nỗ lực đăng nhập thất bại; người dùng bị khóa, quá nhiều lần thử trong một khoảng thời gian, v.v. Không có cách nào mà tôi thấy truyền đạt điều đó đến bộ điều khiển để nó có thể hiển thị thông báo thích hợp. Các thuộc tính khác của nhà cung cấp thành viên như PasswordStrengthRegularExpression hoàn toàn không có hiệu lực đối với việc kiểm soát đăng nhập (ngoài hộp), tôi hy vọng rằng nó sẽ tự động chuyển thành các trình xác nhận biểu thức chính quy, nhưng điều đó dường như không phải là trường hợp. Vì vậy, có vẻ như tôi cần phải khởi tạo các thuộc tính kiểm soát đăng nhập với các thiết lập này trong cấu hình của nhà cung cấp nếu tôi muốn chúng tự kiểm soát.
Nếu điều duy nhất mà điều khiển đăng nhập không thực hiện được (không xử lý thủ công các sự kiện và thực hiện khởi tạo như mô tả ở trên) gọi phương thức ValidateUser trên nhà cung cấp thành viên, tôi không thấy cách nào để chuyển về Đăng nhập kiểm soát lý do tại sao xác thực không thành công hoặc thậm chí làm những việc như điều chỉnh các yêu cầu xác thực dựa trên một cửa sổ thời gian nhất định. Cuối cùng câu hỏi của tôi là tại sao tôi thậm chí sẽ sử dụng các nhà cung cấp thành viên sau đó kết hợp với kiểm soát đăng nhập? Có vẻ như nó chỉ được thiết kế cho một đáp ứng kiểu Có/Không, rất hạn chế. Nếu tôi muốn xây dựng trong logic với các thông điệp khác nhau cho người dùng, tôi cần xử lý các sự kiện kiểm soát đăng nhập và gọi các lớp xác thực của riêng tôi sẽ xử lý tất cả các yêu cầu nghiệp vụ của tôi cũng như trả về một thông báo lỗi tùy chỉnh. hiển thị cho người dùng để họ biết tại sao nỗ lực của họ không hợp lệ.
Trừ khi tôi sai trong các giả định của mình, có vẻ như giao diện giữa Kiểm soát đăng nhập với tư cách là API thành viên quá hạn chế để hữu ích. Có lẽ API hoạt động tốt hơn cho các điều khiển auth khác như ChangePassword tốt hơn nhưng đối với kiểm soát Đăng nhập thực tế, tôi không thấy điểm.
Tôi đánh giá cao suy nghĩ của bạn.
Nhà cung cấp tư cách thành viên có mất giá trị của nó đối với tôi vào thời điểm đó không? Nếu tôi tiếp tục và xử lý sự kiện Authenticate, thì tôi phải tự gọi phương thức ValidateUser trên chính nhà cung cấp đó. Phương pháp đó sẽ không đủ nên tôi sẽ phải gọi một phương thức khác mà thực sự sẽ cho tôi biết tại sao đăng nhập thất bại. Tôi đồng ý với bạn về độ mạnh của mật khẩu. – e36M3
@ e36M3 - Yeap bạn đã đúng. đó là con đường để đi. Những gì tôi sẽ làm là gọi đầu tiên tất cả xác nhận, viết lỗi trên tài sản ErrorMessage kiểm soát và cuối cùng, nếu một cái gì đó không thành công, –