5

मैं एक वेब अनुप्रयोग प्रोजेक्ट को लागू करने की कोशिश कर रहा हूं जहां मेरे वेब पेज AJAX का उपयोग कर प्रमाणीकरण टिकट समाप्ति दिनांक/समय के लिए सर्वर की जांच कर सकते हैं।इसे प्रभावित किए बिना प्रमाणीकरण टिकट समाप्ति की जांच करें

मैं स्लाइडिंग एक्स्पेरेशन के साथ फॉर्म प्रमाणीकरण का उपयोग कर रहा हूं।

जिस समस्या को मैं चलाता हूं वह यह है कि मैं इसे रीसेट किए बिना मूल्य की जांच कैसे कर सकता हूं। CheckExpiration.aspx - - मैं एक साधारण पृष्ठ बनाया नीचे के पीछे कोड है:

private class AjaxResponse 
    { 
    public bool success; 
    public string message; 
    public string expirationDateTime; 
    public string secondsRemaining; 
    public string issueDate; 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    AjaxResponse ar = new AjaxResponse(); 
    JavaScriptSerializer js = new JavaScriptSerializer(); 

    if (HttpContext.Current.User.Identity.IsAuthenticated) 
    { 
     FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity; 
     string expiration = id.Ticket.Expiration.ToString(); 

     TimeSpan timeRemaining = id.Ticket.Expiration - DateTime.Now; 

     ar.success = true; 
     ar.expirationDateTime = expiration; 
     ar.issueDate = id.Ticket.IssueDate.ToString(); 
     ar.secondsRemaining = timeRemaining.Minutes.ToString() + ":" + timeRemaining.Seconds.ToString(); 
    } 
    else 
    { 
     ar.success = false; 
     ar.message = "User not authenticated"; 
    } 

    string output = js.Serialize(ar); 
    Response.Write(js.Serialize(ar)); 

    } 

मैं ajax हर दूसरे का उपयोग कर अपने आवेदन में मास्टर पेज से इस पृष्ठ कहते हैं। प्रमाणीकरण समाप्ति में आधे रास्ते के पीछे, समाप्ति रीसेट हो जाती है।

मैं इस व्यवहार को कैसे रोकूं? क्या अनुरोध के शीर्षलेख में मैं कुछ भी कर सकता हूं?

+0

जांच यह कुछ इसी तरह है या अपने मुद्दा है diff ... http: //www.dotnetmonster.com/Uwe/Forum.aspx/asp-net-security/2316/problem-with-slidingExpiration – Scorpio

+0

मुझे लगता है कि यह पोस्ट आप लिंक कर रहे हैं किसी को .NET के डिफ़ॉल्ट व्यवहार में समस्या है। मुझे उस व्यवहार की परवाह नहीं है क्योंकि यदि आप निष्क्रिय रहते हैं, तो आप नहीं जानते होंगे कि जब तक आप कुछ करने का प्रयास नहीं करते हैं तब तक आपको सर्वर स्तर पर लॉग आउट नहीं किया जाता है। मैं कुछ और उपयोगकर्ता के अनुकूल बनाने की कोशिश कर रहा हूं, जहां आपको सूचित किया जाएगा कि आप लॉग आउट होने वाले हैं। मैं पृष्ठ पर प्रवेश करने पर केवल जावास्क्रिप्ट टाइमर सेट पर भरोसा नहीं करना चाहता क्योंकि प्रमाणीकरण को किसी अन्य टैब से रीफ्रेश किया जा सकता है। –

उत्तर

0

आप समाप्ति को एक सत्र चर के रूप में क्यों संग्रहीत नहीं करते हैं जिसे आप स्वयं गणना करते हैं? आपको केवल आईडी का मूल्य प्राप्त करने की आवश्यकता है। टिकट। आकांक्षा एक बार। फिर प्रत्येक कॉल, सर्वर से मान प्राप्त करें और तदनुसार इसे बढ़ाएं, और उसे सर्वर पर वापस स्टोर करें।

http://msdn.microsoft.com/en-us/library/ms178581%28v=vs.85%29.aspx

स्यूडोकोड:

if(!Session.KeyExists("Expiration")) 
{ 
    Session["Expiration"] = id.Ticket.Expiration; 
} 

Session["TimeRemaining"] = Session["Expiration"] - DateTime.Now; 

// get all ajaxy here 
0

अपने स्वयं के आवेदन में अपने CheckExpiration.aspx पेज रखो और अपने मुख्य आवेदन के नीचे एक वर्चुअल निर्देशिका के रूप में इस की तैनाती। उस वर्चुअल निर्देशिका में, slidingExpiration = false कॉन्फ़िगर करें। आपका कोड इस तरह काम करेगा लेकिन टिकट समाप्त नहीं करेगा जब यह समाप्ति तक आधे समय से नीचे हो जाएगा।

यहाँ है कि मैं क्या एक त्वरित स्थानीय परियोजना में किया था कि यह काम करता सत्यापित करने के लिए है:

  1. एक नया वेब अनुप्रयोग AuthTest4 बनाया गया और रास्ते में स्थानीय आईआईएस सर्वर का उपयोग करने के लिए कॉन्फ़िगर/AuthTest4
  2. आईआईएस में चली गई और सभी ऑटोजनेरेट/पृथक विकल्पों को अनचेक करने के लिए मशीन की सेटिंग/AuthTest4 को बदल दिया और अपनी मशीनकी उत्पन्न की।
  3. एक खाली वेब अनुप्रयोग ExpCheck बनाया और वर्चुअल निर्देशिका में स्थानीय आईआईएस उपयोग करने के लिए/AuthTest4/ExpCheck
  4. बदलाव कर दिया है करने के लिए ExpCheck आवेदन की web.config
  5. कॉन्फ़िगर्ड ExpCheck वेब अनुप्रयोग उस में अपने CheckExpiration.aspx कोड डाल केवल

ExpCheck web.config से नीचे दिखाया गया अनुभाग। अन्य सभी सुरक्षा सेटिंग्स माता-पिता वर्चुअल निर्देशिका से नीचे आ जाएंगी।

<system.web> 
    <authentication mode="Forms"> 
    <forms slidingExpiration="false" /> 
    </authentication> 
</system.web> 
संबंधित मुद्दे