এএসপি.এনইটি অধিবেশন উন্মুক্ত / জীবিত রাখা


115

ব্যবহারকারী যতক্ষণ ব্রাউজার উইন্ডো খোলা থাকে ততক্ষণ কোন এএসপি.এনইটি সেশনটি বাঁচিয়ে রাখার সবচেয়ে সহজ এবং অবাধ্য উপায়? এটি কি এজেএক্স কলগুলি সমাপ্ত হয়েছে? আমি নিম্নলিখিতগুলি প্রতিরোধ করতে চাই: কখনও কখনও ব্যবহারকারীরা তাদের উইন্ডোটি দীর্ঘ সময়ের জন্য খোলা রাখেন, তারপরে স্টাফ প্রবেশ করুন এবং কিছু জমা দেওয়ার পরে আর কাজ করে না কারণ সার্ভারের সাইড সেশনটির মেয়াদ শেষ হয়ে গেছে। আমি সার্ভারে 10 মিনিটের বেশি সময়ের জন্য টাইমআউট মান বাড়াতে চাই না কারণ আমি ক্লোজড সেশনগুলি (ব্রাউজার উইন্ডোটি বন্ধ করে) দ্রুত সময়ের জন্য চাই।

পরামর্শ, কোড নমুনা?


উত্তরটি পেতে আপনি এই লিঙ্কটি পরীক্ষা করতে পারেন ডটনেটকিউরি.কম
বিকাশকারী

উত্তর:


170

আমি জিকিউরিটি একটি ডামি এইচটিটিপি হ্যান্ডলারের কাছে একটি সাধারণ এজেএক্স কল সম্পাদন করতে ব্যবহার করি যা আমার সেশনটি বাঁচিয়ে রাখার ব্যতীত কিছুই করে না:

function setHeartbeat() {
    setTimeout("heartbeat()", 5*60*1000); // every 5 min
}

function heartbeat() {
    $.get(
        "/SessionHeartbeat.ashx",
        null,
        function(data) {
            //$("#heartbeat").show().fadeOut(1000); // just a little "red flash" in the corner :)
            setHeartbeat();
        },
        "json"
    );
}

সেশন হ্যান্ডলার যতটা সহজ হতে পারে:

public class SessionHeartbeatHttpHandler : IHttpHandler, IRequiresSessionState
{
    public bool IsReusable { get { return false; } }

    public void ProcessRequest(HttpContext context)
    {
        context.Session["Heartbeat"] = DateTime.Now;
    }
}

মূলটি হ'ল আইআরকিয়ারসেশনস্টেট যুক্ত করা, অন্যথায় সেশনটি উপলব্ধ হবে না (= নাল)। হ্যান্ডলার অবশ্যই JSON সিরিয়ালযুক্ত বস্তুটি ফিরিয়ে দিতে পারে যদি কিছু ডেটা কলিং জাভাস্ক্রিপ্টে ফিরিয়ে দেওয়া উচিত।

ওয়েব কনফিগের মাধ্যমে উপলব্ধ:

<httpHandlers>
    <add verb="GET,HEAD" path="SessionHeartbeat.ashx" validate="false" type="SessionHeartbeatHttpHandler"/>
</httpHandlers>

আগস্ট 14, 2012-এ বেলেক্সানড্রে থেকে যুক্ত হয়েছে

আমি এই উদাহরণটি অনেক পছন্দ করেছি, যে আমি এইচটিএমএল / সিএসএস এবং বীট অংশটি দিয়ে উন্নত করতে চাই

এই পরিবর্তন

//$("#heartbeat").show().fadeOut(1000); // just a little "red flash" in the corner :)

মধ্যে

beatHeart(2); // just a little "red flash" in the corner :)

এবং যোগ করুন

// beat the heart 
// 'times' (int): nr of times to beat
function beatHeart(times) {
    var interval = setInterval(function () {
        $(".heartbeat").fadeIn(500, function () {
            $(".heartbeat").fadeOut(500);
        });
    }, 1000); // beat every second

    // after n times, let's clear the interval (adding 100ms of safe gap)
    setTimeout(function () { clearInterval(interval); }, (1000 * times) + 100);
}

এইচটিএমএল এবং সিএসএস

<div class="heartbeat">&hearts;</div>

/* HEARBEAT */
.heartbeat {
    position: absolute;
    display: none;
    margin: 5px;
    color: red;
    right: 0;
    top: 0;
}

এখানে কেবল মারধরের অংশটির জন্য একটি সরাসরি উদাহরণ রয়েছে : http://jsbin.com/ibagob/1/


@ ওয়েগার্বি "একটি ডামি এইচটিটিপি হ্যান্ডলারের কাছে যা আমার সেশনটি বাঁচিয়ে রাখে কিছুই করে না"। সেশনটি বাঁচিয়ে রাখতে আপনি কি এইচটিটিপি হ্যান্ডলারের নমুনা কোড পোস্ট করতে পারেন?
গোপীনাথ

না, এবং সেখানে আপনার একমাত্র বিকল্পটি (আমার ধারণা) সেশনের সময়সীমা বাড়ানো, তবে এটি সম্ভবত দীর্ঘকালীন একটি খারাপ ধারণা
Veggerby

সম্পর্কিত বিষয়ে তদন্ত করছিল এবং এই সমাধানটি এসেছিল। ভাল জিনিস. যদিও একটি জিজ্ঞাসা, ব্যবহারকারী যদি তাদের ব্রাউজারটি খোলা রাখেন এবং বলেন যে পিসি 10 ঘন্টা ঘুমায় না, সেশনটি এত দীর্ঘ জন্য ঠিক রাখা হবে, তাই না? এটা কী ঠিক?
জুলিয়াস এ

2
খুব ভাল কাজ তবে আমি কলটিতে ক্যাশে ফেটে না যাওয়া পর্যন্ত এটি আমার কাছে ব্যর্থ হয়েছিল। এই ক্যাশে বিস্ফোরণ প্যারামিটার ব্যতীত
জিন

1
@ স্টম এটি একটি সেশন মান হিসাবে বোঝানো হচ্ছে, সময়সীমা বা কোনও কিছুই নয়। ব্যবহারের কারণটি DateTime.Nowছিল সেশনটি হার্টবিট দিয়ে সর্বশেষ আপডেট করার সময় এটি স্পষ্ট করা।
Veggerby

69

আপনি যদি এএসপি.নেট এমভিসি ব্যবহার করে থাকেন - আপনার অতিরিক্ত এইচটিটিপি হ্যান্ডলার এবং ওয়েবকনফিগ ফাইলটির কিছু সংশোধন করার দরকার নেই। আপনার যা দরকার তা - কেবল কোনও হোম / সাধারণ কন্ট্রোলারে কিছু সাধারণ ক্রিয়া যুক্ত করতে:

[HttpPost]
public JsonResult KeepSessionAlive() {
    return new JsonResult {Data = "Success"};
}

, জাভাস্ক্রিপ্ট কোডটির মতো এই অংশটি লিখুন (আমি এটি সাইটের জাভাস্ক্রিপ্ট ফাইলের মধ্যে একটিতে রেখেছি):

var keepSessionAlive = false;
var keepSessionAliveUrl = null;

function SetupSessionUpdater(actionUrl) {
    keepSessionAliveUrl = actionUrl;
    var container = $("#body");
    container.mousemove(function () { keepSessionAlive = true; });
    container.keydown(function () { keepSessionAlive = true; });
    CheckToKeepSessionAlive();
}

function CheckToKeepSessionAlive() {
    setTimeout("KeepSessionAlive()", 5*60*1000);
}

function KeepSessionAlive() {
    if (keepSessionAlive && keepSessionAliveUrl != null) {
        $.ajax({
            type: "POST",
            url: keepSessionAliveUrl,
            success: function () { keepSessionAlive = false; }
        });
    }
    CheckToKeepSessionAlive();
}

, এবং একটি জাভাস্ক্রিপ্ট ফাংশন কল করে এই কার্যকারিতা আরম্ভ করুন:

SetupSessionUpdater('/Home/KeepSessionAlive');

দয়া করে নোট করুন! আমি কেবলমাত্র অনুমোদিত ব্যবহারকারীদের জন্য এই কার্যকারিতাটি প্রয়োগ করেছি (বেশিরভাগ ক্ষেত্রে অতিথির জন্য সেশন স্টেট রাখার কোনও কারণ নেই) এবং সেশন রাষ্ট্রকে সক্রিয় রাখার সিদ্ধান্ত কেবল এই ভিত্তিতে নয় - ব্রাউজারটি উন্মুক্ত বা না, তবে অনুমোদিত ব্যবহারকারীকে অবশ্যই কিছু কার্যকলাপ করতে হবে সাইটে (একটি মাউস সরান বা কিছু কী টাইপ করুন)।


3
এমভিসির পক্ষে আমি মনে করি এটি আরও ভাল উত্তর। .Ashx ফাইলটি ব্যবহার করার দরকার নেই, আপনি কেন করবেন?
arame3333

সঙ্গে HTTP- র হ্যান্ডলার এএসপি মধ্যে MVC পরীক্ষা এই , আশা কেউ সাহায্য করে।
শাইজুট

3
মেরিয়ান, আপনি @Url.Action("KeepSessionAlive","Home")ইনিশিয়াল ফাংশনটিতেও ব্যবহার করতে চাইবেন যাতে আপনার ইউআরএলটি হার্ডকোড করতে না হয় এবং আইআইএফইয়ের প্রথম ব্লকটি ফেলে দিতে হয় না এবং কেবল এক্সপোর্ট করতে হয় SetupSessionUpdaterযেহেতু কেবলমাত্র বাহ্যিকভাবে আহ্বান করা দরকার - এরকম কিছু এটি: সেশনআপডেটার.জেএস
কাইলমিট

সেটইন্টারওয়াল ব্যবহার না করার কোনও কারণ আছে কি? setInterval(KeepSessionAlive, 300000)
ম্যাথিউউ কর্মিয়ার

8

আপনি যখনই সার্ভারকে অনুরোধ করবেন সেশন সময়সীমা পুনরায় সেট করে। সুতরাং আপনি সার্ভারে খালি এইচটিটিপি হ্যান্ডলারের কাছে কেবলমাত্র একটি এজ্যাক্স কল করতে পারেন তবে হ্যান্ডলারের ক্যাশে অক্ষম রয়েছে তা নিশ্চিত করুন, অন্যথায় ব্রাউজারটি আপনার হ্যান্ডলারের ক্যাশে যাবে এবং একটি নতুন অনুরোধ করবে না।

KeepSessionAlive.ashx.cs

public class KeepSessionAlive : IHttpHandler, IRequiresSessionState
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            context.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
            context.Response.Cache.SetNoStore();
            context.Response.Cache.SetNoServerCaching();
        }
    }

.js:

window.onload = function () {
        setInterval("KeepSessionAlive()", 60000)
}

 function KeepSessionAlive() {
 url = "/KeepSessionAlive.ashx?";
        var xmlHttp = new XMLHttpRequest();
        xmlHttp.open("GET", url, true);
        xmlHttp.send();
        }

@ ওয়েগগারবি - সেশনে ভেরিয়েবলগুলি সংরক্ষণ করার জন্য ওভারহেডের দরকার নেই। সার্ভারে একটি অনুরোধ প্রিফর্মিং যথেষ্ট enough


2

আপনার কি সত্যই অধিবেশনটি রাখা দরকার (এতে কী আপনার কাছে ডেটা রয়েছে?) অথবা কোনও অনুরোধ এলে অধিবেশনটিকে পুনর্বহাল করে এটি কি নকল করা যথেষ্ট? প্রথমটি হলে উপরের পদ্ধতিটি ব্যবহার করুন। দ্বিতীয়টি হলে সেশন_এন্ড ইভেন্ট হ্যান্ডলারটি ব্যবহার করার মতো কিছু চেষ্টা করুন try

আপনার যদি ফর্ম প্রমাণীকরণ থাকে তবে আপনি Global.asax.cs এর মতো কিছু পান

FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(formsCookie.Value);
if (ticket.Expired)
{
    Request.Cookies.Remove(FormsAuthentication.FormsCookieName);
    FormsAuthentication.SignOut();
    ...             
     }
else
{   ...
    // renew ticket if old
    ticket = FormsAuthentication.RenewTicketIfOld(ticket);
    ...
     }

এবং আপনি টিকেট জীবনকাল সেশন আজীবন চেয়ে অনেক দীর্ঘ সেট। আপনি যদি প্রমাণীকরণ না করে থাকেন বা অন্য কোনও প্রমাণীকরণ পদ্ধতি ব্যবহার না করে থাকেন তবে একই রকম কৌশল রয়েছে। মাইক্রোসফ্ট টিএফএস ওয়েব ইন্টারফেস এবং শেয়ারপয়েন্টগুলি এগুলি ব্যবহার করে বলে মনে হচ্ছে - তা হ'ল আপনি যদি কোনও বাসি পৃষ্ঠায় কোনও লিঙ্ক ক্লিক করেন, আপনি পপআপ উইন্ডোতে প্রমাণীকরণের অনুরোধ পাবেন তবে আপনি যদি কেবল একটি আদেশ ব্যবহার করেন তবে এটি কার্যকর হয়।


2

আপনি কেবল জাভা স্ক্রিপ্ট ফাইলটিতে এই কোডটি লিখতে পারেন ts

$(document).ready(function () {
        var delay = (20-1)*60*1000;
        window.setInterval(function () {
            var url = 'put the url of some Dummy page';
            $.get(url);                
        }, delay);
});

(20-1)*60*1000রিফ্রেশ সময়, এটা সময় সময়সীমার রিফ্রেশ হবে। রিফ্রেশ টাইমআউটটি আইআইএস = 20 মিনিটের মধ্যে ডিফল্ট সময় হিসাবে গণনা করা হয়, যার অর্থ 20 × 60000 = 1200000 মিলিসেকেন্ড - 60000 মিলিসেকেন্ড (সেশন শেষ হওয়ার এক মিনিট আগে) 1140000।


0

এখানে একটি বিকল্প সমাধান যা ক্লায়েন্ট পিসি স্লিপ মোডে চলে গেলে বেঁচে থাকা উচিত।

আপনার যদি ব্যবহারকারীদের প্রচুর পরিমাণে লগ ইন থাকে তবে এটিকে সতর্কতার সাথে ব্যবহার করুন কারণ এটি প্রচুর সার্ভারের স্মৃতি খেতে পারে।

আপনি লগইন করার পরে (আমি লগইন নিয়ন্ত্রণের লগডইন ইভেন্টে এটি করি)

Dim loggedOutAfterInactivity As Integer = 999 'Minutes

'Keep the session alive as long as the authentication cookie.
Session.Timeout = loggedOutAfterInactivity

'Get the authenticationTicket, decrypt and change timeout and create a new one.
Dim formsAuthenticationTicketCookie As HttpCookie = _
        Response.Cookies(FormsAuthentication.FormsCookieName)

Dim ticket As FormsAuthenticationTicket = _
        FormsAuthentication.Decrypt(formsAuthenticationTicketCookie.Value)
Dim newTicket As New FormsAuthenticationTicket(
        ticket.Version, ticket.Name, ticket.IssueDate, 
        ticket.IssueDate.AddMinutes(loggedOutAfterInactivity), 
        ticket.IsPersistent, ticket.UserData)
formsAuthenticationTicketCookie.Value = FormsAuthentication.Encrypt(newTicket)

কেন এই ডাউন ভোট দেওয়া হয়েছে? এটির সাথে কোন ধরণের সমস্যা আছে যা আমি উল্লেখ করি নি? যদি ঘটনাটি হয় তবে দয়া করে ভাগ করুন যাতে ভবিষ্যতের পাঠকরা এটি সম্পর্কে সচেতন হন!
পিটার

0

পপআপ ডায়ালগের মাধ্যমে ব্যবহারকারীকে সেশনটি পুনর্নবীকরণের বিকল্পটি দিতে বা এটির মেয়াদ শেষ হওয়ার অনুমতি দেওয়ার জন্য কীভাবে ওয়েবফোর্সে ব্যবহারকারীদের সেশনটি দীর্ঘায়িত করতে হবে তা বোঝার চেষ্টা করে আমি কয়েক দিন ব্যয় করেছি। আপনার যে # 1 টি জিনিসটি জানতে হবে এটি হ'ল আপনার এই অভিনব 'HttpContext' সামগ্রীগুলির কোনও দরকার নেই অন্য উত্তরগুলির মধ্যে কিছু চলছে। আপনার যা দরকার তা হ'ল jQuery এর p। পোস্ট (); পদ্ধতি। উদাহরণস্বরূপ, ডিবাগিংয়ের সময় আমি ব্যবহার করেছি:

$.post("http://localhost:5562/Members/Location/Default.aspx");

এবং আপনার লাইভ সাইটে আপনি এমন কিছু ব্যবহার করবেন:

$.post("http://mysite/Members/Location/Default.aspx");

তার যে হিসাবে হিসাবে সহজ. তদতিরিক্ত, যদি আপনি ব্যবহারকারীদের তাদের সেশনটি পুনর্নবীকরণের বিকল্পের সাথে অনুরোধ করতে চান তবে নীচের মতো কিছু করুন:

    <script type="text/javascript">
    $(function () { 
        var t = 9;
        var prolongBool = false;
        var originURL = document.location.origin;
        var expireTime = <%= FormsAuthentication.Timeout.TotalMinutes %>;

        // Dialog Counter
        var dialogCounter = function() {
            setTimeout( function() {
                $('#tickVar').text(t);
                    t--;
                    if(t <= 0 && prolongBool == false) {
                        var originURL = document.location.origin;
                        window.location.replace(originURL + "/timeout.aspx");
                        return;
                    }
                    else if(t <= 0) {
                        return;
                    }
                    dialogCounter();
            }, 1000);
        }

        var refreshDialogTimer = function() {
            setTimeout(function() { 
                $('#timeoutDialog').dialog('open');
            }, (expireTime * 1000 * 60 - (10 * 1000)) );
        };

        refreshDialogTimer();

        $('#timeoutDialog').dialog({
            title: "Session Expiring!",
            autoOpen: false,
            height: 170,
            width: 350,
            modal: true,
            buttons: {
                'Yes': function () {
                    prolongBool = true;
                    $.post("http://localhost:5562/Members/Location/Default.aspx"); 
                    refreshDialogTimer();
                    $(this).dialog("close");
                },
                Cancel: function () {
                    var originURL = document.location.origin;
                    window.location.replace(originURL + "/timeout.aspx");
                }
            },
            open: function() {
                prolongBool = false;
                $('#tickVar').text(10);
                t = 9;
                dialogCounter();
            }
        }); // end timeoutDialog
    }); //End page load
</script>

আপনার এইচটিএমএলে ডায়ালগটি যুক্ত করতে ভুলবেন না:

        <div id="timeoutDialog" class='modal'>
            <form>
                <fieldset>
                    <label for="timeoutDialog">Your session will expire in</label>
                    <label for="timeoutDialog" id="tickVar">10</label>
                    <label for="timeoutDialog">seconds, would you like to renew your session?</label>
                </fieldset>
            </form>
        </div>

0

Veggerby এর সমাধানের ক্ষেত্রে, আপনি যদি এটি কোনও VB অ্যাপ্লিকেশনটিতে প্রয়োগ করার চেষ্টা করছেন তবে কোনও অনুবাদকের মাধ্যমে সরবরাহকৃত কোডটি চালানোর চেষ্টা করতে সাবধান হন। নিম্নলিখিতগুলি কাজ করবে:

Imports System.Web
Imports System.Web.Services
Imports System.Web.SessionState

Public Class SessionHeartbeatHttpHandler
    Implements IHttpHandler
    Implements IRequiresSessionState

    ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property

    Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
        context.Session("Heartbeat") = DateTime.Now
    End Sub
End Class

এছাড়াও হার্টবিট () ফাংশনটির মতো কল করার পরিবর্তে:

 setTimeout("heartbeat()", 300000);

পরিবর্তে, এটি কল করুন:

 setInterval(function () { heartbeat(); }, 300000);

এক নম্বর, সেটটাইমআউট কেবল একবার আগুন জ্বালিয়ে দেয় যখন সেটইন্টারভাল বারবার ফায়ার করবে। দ্বিতীয় নম্বরে, হার্টবিট () স্ট্রিংয়ের মতো কল করা আমার পক্ষে কার্যকর হয়নি, যদিও এটিকে কল করা প্রকৃত ফাংশনের মতোই হয়।

এবং আমি একেবারে 100% নিশ্চিত করতে পারি যে এই সমাধানটি প্লেস্কে 5 মিনিটের অ্যাপপুল সেশন জোর করার GoDaddy এর হাস্যকর সিদ্ধান্তকে অতিক্রম করবে!


0

হ্যান্ডেল অপ্টিমাইজেশান সহ মেরিয়ানের সমাধানের JQuery প্লাগইন সংস্করণ এখানে। শুধুমাত্র JQuery 1.7+ দিয়ে!

(function ($) {
    $.fn.heartbeat = function (options) {
        var settings = $.extend({
            // These are the defaults.
            events: 'mousemove keydown'
            , url: '/Home/KeepSessionAlive'
            , every: 5*60*1000
        }, options);

        var keepSessionAlive = false
         , $container = $(this)
         , handler = function () {
             keepSessionAlive = true;
             $container.off(settings.events, handler)
         }, reset = function () {
             keepSessionAlive = false;
             $container.on(settings.events, handler);
             setTimeout(sessionAlive, settings.every);
         }, sessionAlive = function () {
             keepSessionAlive && $.ajax({
                 type: "POST"
                 , url: settings.url
                 ,success: reset
                });
         };
        reset();

        return this;
    }
})(jQuery)

এবং এটি কীভাবে আপনার * .cshtml এ আমদানি করে

$('body').heartbeat(); // Simple
$('body').heartbeat({url:'@Url.Action("Home", "heartbeat")'}); // different url
$('body').heartbeat({every:6*60*1000}); // different timeout

0

[পার্টিতে দেরিতে ...]

অ্যাজাক্স কল বা ওয়েব সার্ভিস হ্যান্ডলারের ওভারহেড ছাড়াই এটি করার আরেকটি উপায় হ'ল একটি নির্দিষ্ট এএসপিএক্স পৃষ্ঠা নির্দিষ্ট সময়ের পরে লোড করা (অর্থাত্ সেশন স্টেট আউট আউট হওয়ার আগে যা সাধারণত 20 মিনিটের সময় হয়):

// Client-side JavaScript
function pingServer() {
    // Force the loading of a keep-alive ASPX page
    var img = new Image(1, 1);
    img.src = '/KeepAlive.aspx';
}

KeepAlive.aspxপৃষ্ঠা কেবল একটি খালি পাতা, যা কিছুই কিন্তু স্পর্শ নেই /? Refresh Sessionরাজ্য:

// KeepAlive.aspx.cs
public partial class KeepSessionAlive: System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // Refresh the current user session
        Session["refreshTime"] = DateTime.UtcNow;
    }
}

এটি একটি img(চিত্র) উপাদান তৈরি করে এবং KeepAlive.aspxপৃষ্ঠাটি থেকে ব্রাউজারকে এর বিষয়বস্তু লোড করতে বাধ্য করে কাজ করে । এই পৃষ্ঠাটি লোড করার ফলে সার্ভারটি স্পর্শ করে (আপডেট)Session অবজেক্টটির , সেশনের মেয়াদ শেষ হওয়ার সময় স্লাইডিংয়ের সময় উইন্ডোটি প্রসারিত করে (সাধারণত আরও 20 মিনিটের দ্বারা)। প্রকৃত ওয়েব পৃষ্ঠাগুলি ব্রাউজার দ্বারা বাতিল করা হয়।

একটি বিকল্প এবং সম্ভবত ক্লিনার, এটি করার উপায় একটি নতুন iframeউপাদান তৈরি করা এবং এতে KeepAlive.aspxপৃষ্ঠাটি লোড করা। iframeউপাদান যেমন এটি একটি গোপন সন্তান উপাদান করে হিসাবে, লুকানো হয়div পৃষ্ঠাতে উপাদান কোথাও।

পুরো পৃষ্ঠার শরীরের জন্য মাউস এবং কীবোর্ড ক্রিয়াকলাপগুলিকে আটকে রেখে পৃষ্ঠাতে ক্রিয়াকলাপটি নিজেই সনাক্ত করা যেতে পারে:

// Called when activity is detected
function activityDetected(evt) {
    ...
}

// Watch for mouse or keyboard activity
function watchForActivity() {
    var opts = { passive: true };
    document.body.addEventListener('mousemove', activityDetected, opts);
    document.body.addEventListener('keydown', activityDetected, opts);
}

আমি এই ধারণার জন্য কৃতিত্ব নিতে পারি না; দেখুন: https://www.codeproject.com/Articles/227382/Alert-Session-Time-out-in-ASP-Net

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.