2008-12-22 8 views
10

मैं AJAX कॉल (विशेष रूप से jQuery AJAX) का उपयोग करने के लिए एक सुंदर गहन CRUD प्रकार ASP.NET पृष्ठ को फिर से लिखना चाहता हूं। ऐसा करने में मेरी चिंता यह है कि उपयोगकर्ता फॉर्म प्रमाणीकरण टाइमआउट से अधिक इस पृष्ठ पर हो सकता है। इस वजह से, मैं सोच रहा हूं कि मुझे प्रत्येक AJAX कॉल के साथ फ़ॉर्म प्रमाणीकरण टिकट का विस्तार करना चाहिए (मूल रूप से यह सामान्य वेब फ़ॉर्म में मॉडल कैसे प्रस्तुत करता है)। तो प्रश्न:विस्तारित फॉर्म प्रमाणीकरण टाइमआउट jQuery के साथ AJAX कॉल करते समय

क्या यह भी एक वैध चिंता है? यदि हां, तो फॉर्म प्रमाणीकरण टाइमआउट का विस्तार करने के लिए एक jQuery प्लगइन लिखना संभव होगा? क्या कोई पहले से मौजूद है? ASP.NET AJAX का उपयोग करना बेहतर दृष्टिकोण होगा?

कोई भी टिप्पणी \ सहायता की सराहना की जाएगी।

+0

यहाँ है एक [ब्लॉग पोस्ट] नाम (http://weblogs.asp.net/traviscollins/archive/2008/02/22/ajax-timeout-server-control.aspx) इससे मदद मिल सकती है। – sjb101

उत्तर

8

मैं पुष्टि कर सकता हूं कि jQuery के माध्यम से एक वेब सेवा या पेज विधि कॉल करना एक नियमित पोस्टबैक के साथ एक एएसपी.NET सत्र समाप्ति का विस्तार करेगा।

मैं अक्सर "रख-रखाव" सेवा को कॉल करने के लिए पांच मिनट सेट इंटरवल() का उपयोग करता हूं, जो उपयोगकर्ता के सत्र को अनिश्चित काल तक सुरक्षित रखेगा, भले ही वे एप्लिकेशन निष्क्रिय हो जाएं।

+9

यह सत्र बढ़ाएगा, लेकिन नहीं, लेकिन यह टिकट कभी भी विस्तारित नहीं होगा जरूरी रूप से प्रपत्र प्रमाणीकरण टाइमआउट - जैसा कि मैं इसे समझता हूं, और ऐसा लगता है कि एक मौजूदा मुद्दे द्वारा मैंने एक जीवित जीवित उपयोग किया है, ये दो अलग-अलग चीजें हैं।जीवित रहने का उपयोग करके, मेरा सत्र वास्तव में विस्तारित होता है, लेकिन फॉर्म प्रमाणीकरण टाइमआउट अभी भी होता है। – sydneyos

+2

मैंने यह भी अनुभव किया है कि प्रपत्र प्रमाणीकरण टिकट की समाप्ति अजाक्स कॉल के साथ विस्तारित नहीं है, भले ही अजाक्स कॉल सर्वर साइड सत्र का विस्तार करे। –

+0

मैंने सत्यापित किया है कि जावास्क्रिप्ट या jQuery से एक स्थिर पेज विधि या AJAX- सक्षम वेब सेवा को कॉल करने से प्रपत्र प्रमाणीकरण टिकट 'प्रदान किया जाता है' प्रदान की गई स्लाइडिंग समाप्ति सत्य पर सेट की जाती है। यदि स्लाइडिंग समाप्ति वेब.कॉन्फिग में झूठी पर सेट की गई है, तो ऐसी विधि को कॉल करने से फॉर्म प्रमाणीकरण टिकट का विस्तार नहीं होता है। – Sunil

0

मुझे नहीं लगता कि मैं पूरी तरह से समझता हूं कि आप क्या पूछ रहे हैं लेकिन jquery AJAX टाइमआउट के संदर्भ में, आप स्थानीय टाइमआउट को AJAX कॉल में सेट कर सकते हैं।

उदाहरण:

$.ajax('ajax.php',{timeout: 60000},function (data) { 
alert(data); 
} 
+0

ऐप एक एएसपी.नेट है जो फॉर्म प्रमाणीकरण का उपयोग करता है। पारंपरिक एएसपी.Net में, फॉर्म्सएथ टिकट पोस्टबैक पर बढ़ाया गया है। अगर मैं AJAX का उपयोग कर रहा हूं, तो मैं पूर्ण पोस्टबैक नहीं कर रहा हूं और यदि मैं इसे स्पष्ट रूप से नहीं करता (कम से कम मुझे लगता है, इसलिए प्रश्न) – Godless667

0

उपयोग फ़िडलर या कुछ अन्य उपयोगिता देखने के लिए कि माइक्रोसॉफ्ट बहुत चालाक बनाने के लिए था सुनिश्चित करें कि कुकी AJAX के बीच अद्यतन हो जाता है कहते हैं। यदि आप माइक्रोसॉफ्ट के बेक्ड-इन एएसपीनेट AJAX (जो काफी समान है) का उपयोग करते हैं तो आपके पास बेहतर भाग्य हो सकता है (फॉर्म ऑथ टिकिट के स्वचालित अपडेट के संबंध में)।

1

आपको स्क्रिप्ट मैनेजर के बिना एमएस अजाक्स का उपयोग करने और वेबमाइड्स का उपभोग करने के लिए jQuery का उपयोग करने में सक्षम होना चाहिए। अधिक जानकारी here

जहां तक ​​मुझे पता है, वेबमेडिंग को कॉल करने से उपयोगकर्ता के सत्र टाइमआउट का विस्तार होगा। तो यह दृष्टिकोण दोनों दुनिया के सर्वश्रेष्ठ हो सकता है।

0

फ़ॉर्म ऑथ एक कुकी के माध्यम से काम करता है। कुकीज़ XMLHttpRequest अनुरोधों के साथ भेजी जाती हैं, इसलिए मुझे नहीं लगता कि यहां कोई समस्या है।

ध्यान दें कि FormsAuthTicket की समाप्ति से संबंधित एक समस्या है, और login.aspx या कुछ ऐसे पर रीडायरेक्ट करने के लिए मजबूर होना पड़ रहा है। लेकिन आप जो बात कर रहे हैं उसके मुकाबले यह एक बिल्कुल अलग परिदृश्य है।

1

मैं इसे अपने रखरखाव webservice के लिए उपयोग करता हूं। इसे अपनी पसंद के अनुसार संशोधित करें और मुझे बताएं कि यह काम करता है ... नोट: सत्र ("यूआईडी") एक परिवर्तनीय है जो मैं लॉगिन पर सेटअप करता हूं। मैं अपने टिकट एक ही

<WebMethod(CacheDuration:=0, EnableSession:=True)> _ 
Public Function keepSessionAlive() As String 
    If Session("UID") Is Nothing OrElse Session("UID") = 0 Then 
     Throw New ApplicationException("Login") 
    End If 

    Session("lastKeepSessionAlive") = DateTime.Now 

    If Not (Context.Request.Cookies(System.Web.Security.FormsAuthentication.FormsCookieName) Is Nothing) Then 
     Dim ticket As System.Web.Security.FormsAuthenticationTicket 
     Try 
      ticket = System.Web.Security.FormsAuthentication.Decrypt(Context.Request.Cookies(System.Web.Security.FormsAuthentication.FormsCookieName).Value) 
      If ticket.Name = Context.Session("UID") Then 
       System.Web.Security.FormsAuthentication.SetAuthCookie(Context.Session("UID"), False) 
       Debug.WriteLine("keepAlive:AuthenticationReset") 
      End If 
     Catch ex As Exception 
      Debug.WriteLine("keepAlive:AuthenticationReset FAILED!!!") 
      Throw New ApplicationException("Login") 
     End Try 
    Else 
     Debug.WriteLine("keepAlive.Load: No Authentication Cookie. Error") 
     Throw New ApplicationException("Login") 
    End If 

    Return Session.SessionID.ToString 
End Function 
संबंधित मुद्दे