Tôi đang sử dụng nhà cung cấp dịch vụ thành viên .NET tiêu chuẩn và tôi nghĩ rằng liệu có ai đó có thể chiếu sáng trên đó không.Tại sao ValidateUser không trả lại nhiều hơn?
Gọi ValidateUser trả lại đúng hoặc sai. Bây giờ vì phương thức chấp nhận tên người dùng và mật khẩu, người ta sẽ cho rằng kết quả trả về sẽ phản ánh tên người dùng hoặc mật khẩu không hợp lệ. Tuy nhiên, nếu chúng ta nghiên cứu kỹ hơn, chúng tôi thấy nó cũng đang kiểm tra IsLockedOut và IsApproved.
public override bool ValidateUser (string username, string password)
{
MembershipUser user = GetUser (username, false);
/* if the user is locked out, return false immediately */
if (user.IsLockedOut)
return false;
/* if the user is not yet approved, return false */
if (!user.IsApproved)
return false;
......
Trong đơn đăng ký của mình, tôi muốn sử dụng IsApproved cho phương tiện của riêng mình. Đơn giản chỉ cần cán nhà cung cấp của riêng tôi sẽ không hoạt động vì tôi vẫn còn bị ràng buộc với một kết quả bool. Việc tạo người dùng cung cấp cho chúng tôi tất cả thông tin chúng tôi cần, vậy tại sao không ValidateUser? Tui bỏ lỡ điều gì vậy?
Làm cho cảm giác hoàn hảo! – mickyjtwin
Đối với kịch bản số 4, nếu tôi là người dùng bonafide, không có thêm thông tin, tôi sẽ xé tóc ra ... kết hợp mật khẩu tên người dùng là chính xác, nhưng tôi không thể đăng nhập! – escist
@escist Yep, và trong thế giới thực khi tài khoản của tôi bị khóa và tôi không thể vào được, đó chính xác là phản ứng của tôi. Điều quan trọng là phải có một con đường thay thế cho phép một người sử dụng để tìm hiểu những gì đang xảy ra mà không đưa thông tin cho "Cyril Cracker". Một số trang web dựa vào một URL sử dụng một lần được gửi qua email cho người dùng, nhưng cũng có các cách tiếp cận khác. – Bevan