54

जानने विधि हस्ताक्षर Evaluting बिना, यह पुराने पासवर्ड पता करने के लिए है, जबकि इसे बदलने की आवश्यकता है।asp.net सदस्यता पासवर्ड बदलें पुराने

membershipUser.ChangePassword(userWrapper.OldPassword, userWrapper.Password) 

क्या पुराने व्यक्ति को जानने के बिना पासवर्ड बदलने का कोई तरीका है।

उत्तर

103
string username = "username"; 
string password = "newpassword"; 
MembershipUser mu = Membership.GetUser(username); 
mu.ChangePassword(mu.ResetPassword(), password); 
+3

रीसेट की आवश्यकता है? – Lalit

+13

ध्यान दें कि 'enablePasswordReset' विकल्प web.config सदस्यता प्रदाता कॉन्फ़िगरेशन –

+0

में सक्षम होना चाहिए क्यों आप mu.GetPassword() का उपयोग नहीं कर सकते हैं; mu.ResetPassword() के बजाय; ? – RMiranda

14

आप इसे बदलने से पहले उपयोगकर्ता का पासवर्ड रीसेट, और ChangePassword करने के लिए उत्पन्न पासवर्ड में पारित करने के लिए की जरूरत है।

string randompassword = membershipUser.ResetPassword(); 
membershipUser.ChangePassword(randompassword , userWrapper.Password) 

या इनलाइन:

membershipUser.ChangePassword(membershipUser.ResetPassword(), userWrapper.Password) 
+0

तुम सिर्फ membershipUser.GetPassword उपयोग नहीं कर सकते क्यों(); सदस्यता के बजाय उपयोगकर्ता। रीसेट पासवर्ड(); ? – RMiranda

+3

@RMiranda - क्योंकि पासवर्ड को पुनर्प्राप्त करने योग्य तरीके से कभी भी संग्रहित नहीं किया जाना चाहिए। उन्हें इसके बजाय धोया जाना चाहिए। http://msdn.microsoft.com/en-us/library/2x0c6sfa(v=vs.110).aspx देखें और http://en.wikipedia.org/wiki/Cryptographic_hash_function#Password_verification –

1

उपयोग पासवर्ड आप SimpleMembershipProvider यह आसान है उपयोग करने के लिए की 123456.

MembershipUser user;  
user = Membership.GetUser(userName,false); 
user.ChangePassword(user.ResetPassword(),"123456"); 
4

कोशिश जगह में पाठ बॉक्स से सेट करना चाहते हैं:

var token = WebSecurity.GeneratePasswordResetToken("LoginOfUserToChange"); 
WebSecurity.ResetPassword(token, "YourNewPassword"); 
3

कृपया ध्यान दें, RequiresQuestionAndAnswer संपत्ति सदस्यता सिस्टम विन्यास में गलत पर सेट है, तो इन सभी का उल्लेख किया समाधान केवल काम करेंगे। यदि RequiresQuestionAndAnswer सत्य है तो ResetPassword विधि को सुरक्षा उत्तर पारित करने की आवश्यकता है, अन्यथा यह एक अपवाद फेंक देगा।

मामले में आप को सही पर RequiresQuestionAndAnswer सेट की जरूरत है, तो आप इस workaround

18

यहाँ अन्य उत्तर सही हैं उपयोग कर सकते हैं, लेकिन एक अज्ञात स्थिति में पासवर्ड छोड़ सकते हैं।

ChangePassword अपवाद फेंक अगर पासवर्ड आवश्यकताओं web.config में बाहर रखी (न्यूनतम लंबाई, आदि) को पूरा नहीं करता होगा। लेकिन यह केवल ResetPassword के बाद विफल रहता है, इसलिए पासवर्ड मूल उपयोगकर्ता या उस व्यक्ति को नहीं जाना चाहिए जिसने इसे बदलने की कोशिश की है। पासवर्ड बदलने से बचने के लिए पहले जटिलता आवश्यकताओं के लिए जाँच करें:

var user = Membership.GetUser(userName, false); 

if ((newPassword.Length >= Membership.MinRequiredPasswordLength) && 
    (newPassword.ToCharArray().Count(c => !Char.IsLetterOrDigit(c)) >= 
     Membership.MinRequiredNonAlphanumericCharacters) && 
    ((Membership.PasswordStrengthRegularExpression.Length == 0) || 
     Regex.IsMatch(newPassword, Membership.PasswordStrengthRegularExpression))) { 

    user.ChangePassword(user.ResetPassword(), newPassword); 
} else { 
    // Tell user new password isn't strong enough 
} 
+1

आज भी यह एक वैध और अंतर्दृष्टिपूर्ण टिप्पणी है (विरासत कोड के लिए जिस पर मैं काम कर रहा हूं)। धन्यवाद। – Sean

0

@Rob चर्च सही है:

The other answers here are correct but can leave the password in an unknown state.

हालांकि, हाथ से सत्यापन करने के लिए उनके समाधान के बजाय, मैं परिवर्तन करने की कोशिश करेगा टोकन पद्धति और पकड़ और से ResetPassword का उपयोग कर पासवर्ड त्रुटि दिखाने:

var user = UserManager.FindByName(User.Identity.Name); 
string token = UserManager.GeneratePasswordResetToken(user.Id); 
var result = UserManager.ResetPassword(user.Id, token, model.Password); 
if (!result.Succeeded){ 
    // show error 
} 
1

ऊपर पदों पर उल्लेख इस कोड काम कर रहा है:

012,
string username = "username"; 
string password = "newpassword"; 
MembershipUser mu = Membership.GetUser(username); 
mu.ChangePassword(mu.ResetPassword(), password); 

लेकिन आपको सदस्यता प्रदाता टैग में web.config में requQuestionAndAnswer = "false" सेट करना होगा। यदि यह सत्य है, तो रीसेटपासवर्ड विधि एक त्रुटि उत्पन्न करती है "मान शून्य नहीं हो सकता"। इस मामले में आपको ResetPassword पर पैरामीटर के रूप में प्रश्न उत्तर प्रदान करना होगा।

संबंधित मुद्दे