मैं अपने masterpage उपयोगकर्ता अनुप्रेषित करने में कुछ जावास्क्रिप्ट का उपयोग लॉगआउट कार्रवाई करने के लिए (एक प्रॉम्प्ट के बाद सत्र को नवीनीकृत करने)। जब सर्वर सत्र के विस्तार के लिए संवाद में बटन क्लिक करता है तो यह सर्वर साइड सत्र विंडो को रीफ्रेश करने के लिए ऐप के होम पेज पर एक AJAX अनुरोध का उपयोग करता है। संवाद के लिए jQuery और jQuery यूआई पर निर्भर करता है।
<% if (this.Request.IsAuthenticated)
{
int sessionDialogWait = 2 * 60 * 1000 - 60 * 500; // ms = 1.5 minutes
int sessionTimeout = 28 * 60 * 1000; // ms = 28 minutes
if (ViewData["sessionTimeout"] != null)
{
sessionTimeout = ((int)ViewData["sessionTimeout"] * 60 - 120) * 1000;
}
%>
<script type="text/javascript">
var logoutTimer = null;
var sessionTimer = null;
var sessionTimeout = Number('<%= sessionTimeout %>');
var sessionDialogWait = Number('<%= sessionDialogWait %>');
$(document).ready(function() {
$('#sessionEndDialog').dialog({
autoOpen: false,
bgiframe: true,
modal: true,
buttons: {
OK: function() {
$(this).dialog('close');
$.get('<%= Url.Action("About", "Home") %>', scheduleSessionPrompt, 'html');
},
Logout: logoutOnSessionExpires
}
}).ajaxStart(function() { scheduleSessionPrompt(); });
scheduleSessionPrompt();
});
function scheduleSessionPrompt()
{
if (logoutTimer) clearTimeout(logoutTimer);
if (sessionTimer) clearTimeout(sessionTimer);
sessionTimer = setTimeout(sessionExpiring, sessionTimeout );
}
function sessionExpiring()
{
logoutTimer = setTimeout(logoutOnSessionExpires, sessionDialogWait);
$('#sessionEndDialog').dialog('open');
}
function logoutOnSessionExpires()
{
window.location.href = '<%= Url.Action("Logout", "Account") %>';
}
</script>
<% } %>
<div id="sessionEndDialog" title="Session Expiring" style="display: none;">
<p>Your session is about to expire. Click OK to renew your session or Logout to logout of the application.</p>
</div>
क्या ग्लोबल.एक्सएक्स में सत्र_एंड का उपयोग किया जा सकता है? –
मुझे नहीं लगता कि आप सत्र_इंड ईवेंट से ब्राउज़र को किसी दूसरे पृष्ठ पर रीडायरेक्ट कैसे करेंगे जब तक कि ब्राउज़र समय-समय पर यह देखने के लिए जांच नहीं कर रहा कि सत्र लाइव है या नहीं। दुर्भाग्यवश, ब्राउज़र होने से यह कृत्रिम रूप से सत्र को जीवंत रखेगा क्योंकि यह प्रत्येक क्वेरी पर अपडेट किया जाएगा। मैं इसे एक jQuery प्लगइन में बदलने पर काम कर रहा हूं। – tvanfosson
अगर मैं गलत हूं तो मुझे सही करें लेकिन सत्र_एंड पृष्ठभूमि थ्रेड में चलता है और इस तरह उपयोगकर्ता के साथ संवाद नहीं कर सकता है। अपने काम tvanfosson से प्यार है, आपका दृष्टिकोण बहुत अच्छी तरह से काम करता है – CodeKiwi