2008-11-13 36 views
57

vấn đề, không có phương pháp:Làm thế nào để bạn thay đổi mật khẩu băm bằng cách sử dụng nhà cung cấp thành viên asp.net nếu bạn không biết mật khẩu hiện tại?

bool ChangePassword(string newPassword); 

Bạn cần phải biết mật khẩu hiện tại (mà có lẽ băm và bị lãng quên).

+0

bạn nên tách riêng câu hỏi của mình và thêm câu trả lời. –

+0

@mcqwerty, bây giờ chúng tôi đã tách câu trả lời của bạn, bạn nên "chấp nhận" câu trả lời của riêng bạn – harriyott

+0

Công việc tuyệt vời, tôi đã làm điều này với phiên bản ChangePassword của chúng tôi (Admin thay đổi mật khẩu cho người dùng);) – CheGueVerra

Trả lời

126

Đây là một cách dễ dàng mà tôi đã lãng phí quá nhiều thời gian. Hy vọng bài viết này sẽ cứu người khác nỗi đau trán trán như tôi đã làm.

Giải pháp, đặt lại mật khẩu ngẫu nhiên và chuyển mật khẩu đó vào phương thức thay đổi.

MembershipUser u = Membership.GetUser(); 
u.ChangePassword(u.ResetPassword(), "myAwesomePassword"); 
+2

Hey, thôi nào. Đừng downvote để trả lời câu hỏi của riêng bạn. Câu hỏi thường gặp khuyến khích điều đó. Xem http://stackoverflow.com/questions/18557/how-does-stackoverflow-work-the-unofficial-faq#119658 – DOK

+0

Bỏ phiếu xuống (không phải tôi!) Trước khi câu trả lời được chuyển đến đây. Trước đây nó nói rằng câu trả lời là trong câu hỏi. Tôi không quá quan tâm đến những người bỏ phiếu xuống chỉ mới tham gia SO - tốt hơn nhiều là chỉnh sửa để trợ giúp. – harriyott

+0

Có và anh ấy cũng nhận được huy hiệu đẹp !! – CheGueVerra

2

Bạn không thể thay đổi mật khẩu nếu requiresQuestionAndAnswer = "true"

tôi đã làm việc xung quanh cho

Created hai nhà cung cấp thành viên này trong web.config

tôi đang sử dụng nhà cung cấp AspNetSqlMembershipProviderReset để đặt lại mật khẩu vì nó có requireQuestionAndAnswer = false trong đó AspNetSqlMembershipProvider là nhà cung cấp mặc định được sử dụng.

tôi đã viết mã sau để đặt lại mật khẩu cho người dùng.

công bool ResetUserPassword (String psUserName, String psNewPassword) { thử { // Lấy chi tiết người dùng thành viên sử dụng cung cấp thành viên secound với yêu cầu trả lời câu hỏi thiết lập là false.

 MembershipUser currentUser = Membership.Providers["AspNetSqlMembershipProviderReset"].GetUser(psUserName,false); 

     //Reset the user password. 
     String vsResetPassword = currentUser.ResetPassword();    

     //Change the User password with the required password    
     currentUser.ChangePassword(vsResetPassword, psNewPassword); 
     //Changed the comments to to force the user to change the password on next login attempt 
     currentUser.Comment = "CHANGEPASS"; 
     //Check if the user is locked out and if yes unlock the user 
     if (currentUser.IsLockedOut == true) 
     { 
      currentUser.UnlockUser(); 
     } 
     Membership.Providers["AspNetSqlMembershipProviderReset"].UpdateUser(currentUser);   return true; 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
     return false; 
    } 
} 
Các vấn đề liên quan