2013-08-28 8 views
5

मुझे ऐसी सुविधा लागू करने की आवश्यकता है। इसे काम करने की आवश्यकता है ताकि आपके पासवर्ड को आखिरी बार बदलने के x दिन बाद, जब आप लॉगिन करते हैं तो आपको एक संदेश मिलता है जो कहता है, आपका पासवर्ड समाप्त हो गया है, कृपया नया पासवर्ड दर्ज करें और नए पासवर्ड की पुष्टि करेंसाइटकोर जबरन पासवर्ड परिवर्तन

क्या आपके पास कोई है विचार/सुझाव उचित तरीके से ऐसा कैसे करें?

+0

क्या आप सीएमएस उपयोगकर्ता या वेबसाइट उपयोगकर्ताओं की जांच कर रहे हैं? –

+0

हैलो मैं सीएमएस उपयोगकर्ताओं की जांच कर रहा हूं। –

उत्तर

5

आप Process विधि के साथ loggingin पाइपलाइन की पहली प्रोसेसर के रूप में अपने स्वयं के प्रोसेसर जोड़ सकते हैं:

public void Process(LoggingInArgs args) 
{ 
    MembershipUser user = Membership.GetUser(args.Username); 
    if (user != null) 
    { 
     DateTime date = user.LastPasswordChangedDate; 
     if ((DateTime.Now - date).TotalDays > maxDaysWithoutPasswordChange) 
     { 
      HttpContext.Current.Response.Redirect("/passwordchangepage"); 
     } 
    } 
} 

यह सभी उपयोगकर्ताओं कि /passwordchangepage यूआरएल को पासवर्ड बदलने की आवश्यकता पर पहुंच जाएंगे। इस पृष्ठ पर पुराने पासवर्ड और नए पासवर्ड के लिए एक फॉर्म बनाएं।

प्रस्तुत करने प्रपत्र पासवर्ड बदलें पर अमल पर:

MembershipUser user = Membership.GetUser(username); 
user.ChangePassword(oldPassword, newPassword); 
0

Sitecore के सुरक्षा मॉडल ASP.NET एक है, जो वास्तव में इस तरह की कार्यक्षमता के रूप में अच्छी तरह से नहीं है पर आधारित है। तो यह सामान्य एएसपी.NET कार्यक्षमता के अनुकूलन की तरह दिखता है, वास्तव में साइटकोर से संबंधित नहीं है। हालांकि मैं आपको इसे लागू करने के तरीके पर कुछ सुझाव प्रदान कर सकता हूं।

आप उपयोगकर्ता प्रोफ़ाइल के लिए 2 गुण बना सकते हैं: समाप्ति अवधि (या web.config में सेटिंग) के लिए एक संपत्ति, दूसरा पासवर्ड अपडेट करने की तारीख रखने के लिए। फिर आपको अपना प्रमाणीकरण तर्क थोड़ा बदलना चाहिए।

सबसे पहले, उपयोगकर्ता प्रमाणीकृत होने से पहले, आपको लॉगिन फॉर्म पर निर्दिष्ट उपयोगकर्ता के लिए नए कस्टम फ़ील्ड के मानों की जांच करनी चाहिए। फिर यदि पासवर्ड समाप्त हो गया है तो उपयोगकर्ता को इसे बदलने के लिए कहें - उसे 3 फ़ील्ड वाले कुछ फ़ॉर्म वाले पृष्ठ पर रीडायरेक्ट करें: "पुराना पासवर्ड", "नया पासवर्ड" और "नया पासवर्ड पुष्टि करें"।

इन 3 मानों के साथ आप सदस्यशिप उपयोगकर्ता वर्ग की उपयुक्त विधि का उपयोग कर उपयोगकर्ता पासवर्ड बदल सकते हैं। पासवर्ड बदलने के बाद आप उपयोगकर्ता को प्रमाणीकृत कर सकते हैं।

3

मैंने हाल ही में एक ही परियोजना में समान कार्यक्षमता को लागू करने के लिए this पोस्ट का उपयोग किया।

यह आपको आवश्यक कोड के माध्यम से पूर्ण रन देता है और नया Pipeline पैच करने के लिए कॉन्फ़िगरेशन फ़ाइल कैसे बना सकता है। पासवर्ड रीसेट पेज और पासवर्ड समाप्त करने के लिए x दिन के लिए पैरामीटर भी बनाता है।

public class CheckPasswordExpiration 
    { 
     private TimeSpan TimeSpanToExpirePassword { get; set; } 
     private string ChangePasswordPageUrl { get; set; } 

     public void Process(LoggingInArgs args) 
     { 
      Assert.ArgumentNotNull(args, "args"); 
      if (!IsEnabled()) 
      { 
       return; 
      } 

      MembershipUser user = GetMembershipUser(args); 
      if (HasPasswordExpired(user)) 
      { 
       WebUtil.Redirect(ChangePasswordPageUrl); 
      } 
     } 

     private bool IsEnabled() 
     { 
      return IsTimeSpanToExpirePasswordSet() && IsChangePasswordPageUrlSet(); 
     } 

     private bool IsTimeSpanToExpirePasswordSet() 
     { 
      return TimeSpanToExpirePassword > default(TimeSpan); 
     } 

     private bool IsChangePasswordPageUrlSet() 
     { 
      return !string.IsNullOrWhiteSpace(ChangePasswordPageUrl); 
     } 

     private static MembershipUser GetMembershipUser(LoggingInArgs args) 
     { 
      Assert.ArgumentNotNull(args, "args"); 
      Assert.ArgumentNotNullOrEmpty(args.Username, "args.Username"); 
      return Membership.GetUser(args.Username, false); 
     } 

     private bool HasPasswordExpired(MembershipUser user) 
     { 
      return user.LastPasswordChangedDate.Add(TimeSpanToExpirePassword) <= DateTime.Now; 
     } 
    } 
1

मेरी विशेष स्थिति के लिए ग्राहक साइटकोर पासवर्ड रीसेट टूल का उपयोग नहीं करना चाहता था। मैंने अपनी साइटकोर वेब साइट का एक दृश्य स्टूडियो समाधान बनाया और ब्रांडेड चेंज पासवर्ड पेज बनाया। एक बार मेरे पास पृष्ठ था, मैंने अपने वीएस समाधान के ग्लोबल.एक्सएक्स में निम्नलिखित रखा।

protected void Application_PostAuthenticateRequest(object sender, EventArgs e) 
    { 
     if (this.User.Identity.IsAuthenticated) 
     { 
      // Get the user as they log in 
      MembershipUser user = Membership.GetUser(); 

      // if the user is not blank 
      // and the password expiry date is less than the password policy expiration date 
      // and the user is not directly calling the change password page 
      if (user != null && user.LastPasswordChangedDate.Date.AddDays(90) < DateTime.Now.Date && !Request.Path.EndsWith("/layouts/changepw.aspx")) 
      { 
       // Then transfer to the change password page 
       Server.Transfer("~/layouts/changepw.aspx"); 
      } 
     } 
    } 

एक बार जब वे परिवर्तन पासवर्ड पृष्ठ पर क्लिक करते हैं तो मैंने यह देखने के लिए जांच की कि उन्हें लॉगिन पृष्ठ से या वेबसाइट के भीतर से भेजा गया था या नहीं। यूआरएल रेफरर के आधार पर मैंने उचित "आपका पासवर्ड जल्द ही समाप्त हो जाएगा" संदेश प्रदर्शित किया।

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