Auto Keep Session Alive Timeout in MVC, tự động giữ thời gian sống session MVC

Thảo luận trong 'Lập Trình Website MVC5 & MVC6' bắt đầu bởi admin, 6/4/20.

  1. admin

    admin Phạm Công Sơn Thành viên BQT

    Tham gia ngày:
    22/5/13
    Bài viết:
    4,265
    Đã được thích:
    1,034
    Điểm thành tích:
    113
    Giới tính:
    Nam
    Việc giữ cho 1 session sống, hay Session Timeout tự động tăng và không bị chết session trong web MVC khá quan trọng, Auto Keep Session Alive Timeout in MVC, tự động giữ thời gian sống session MVC, Heartbeat to Keep Session Alive in ASP.NET MVC.

    Bạn rất bực mình khi đang thao tác viết bài thì bị mất session, cách xử lý code rất đơn giản như sau:

    Cách 1:

    Bước 1: Tại HomeController.cs bạn thêm đoạn code sau: (hoặc ở bất kỳ controller nào bạn muốn xử lý gia hạn keep session Alive)
    Mã:
    [HttpPost]
    public JsonResult KeepSessionAlive()
    {
          return new JsonResult { Data = "Success" };
    }
    Bước 2: Tại footer.cshtml hoặc Layout.cshtml hoặc ở nơi bạn muốn chèn code javascript giữ session hoạt động truy vấn vào KeepSessionAlive thì add code sau vào: (chèn phía sau thư viện jquery nhé)
    HTML:
    <script type="text/javascript">
        //Có thể tác đoạn đầu này bỏ vào file .js sau đó load ra cũng được.
        SessionUpdater = (function () {
            var clientMovedSinceLastTimeout = false;
            var keepSessionAliveUrl = null;
            var timeout = 5 * 1000 * 60; // 5 phút xử lý load lại session 1 lần
            function setupSessionUpdater(actionUrl) {
                // store local value
                keepSessionAliveUrl = actionUrl;
                // setup handlers
                listenForChanges();
                // start timeout - it'll run after n minutes
                checkToKeepSessionAlive();
            }
            function listenForChanges() {
                $("body").one("mousemove keydown", function () {
                    clientMovedSinceLastTimeout = true;
                });
            }
            // fires every n minutes - if there's been movement ping server and restart timer
            function checkToKeepSessionAlive() {
                setTimeout(function () { keepSessionAlive(); }, timeout);
            }
            function keepSessionAlive() {
                // if we've had any movement since last run, ping the server
                if (clientMovedSinceLastTimeout && keepSessionAliveUrl != null) {
                    $.ajax({
                        type: "POST",
                        url: keepSessionAliveUrl,
                        success: function (data) {
                            // reset movement flag
                            clientMovedSinceLastTimeout = false;
                            // start listening for changes again
                            listenForChanges();
                            // restart timeout to check again in n minutes
                            checkToKeepSessionAlive();
                        },
                        error: function (data) {
                            console.log("Error posting to " & keepSessionAliveUrl);
                        }
                    });
                }
            }
            // export setup method
            return {
                Setup: setupSessionUpdater
            };
        })();
    </script>
    
    <script type="text/javascript">
        // cài đặt update session KeepSessionAlive mỗi khi có người truy cập web, bạn thay controller Home bằng controller của bạn gắn mã.
        SessionUpdater.Setup('@Url.Action("KeepSessionAlive","Home")');
    </script>
    

    Cách 2:


    Nếu bạn muốn mỗi khi gần hết session sẽ hiện thông báo yêu cầu người dùng chọn ở lại tiếp tục kết nối, hay thoát ra kết nối lại như hình thì bạn sử dụng javascript của Bootstrap Session Timeout cũng khá OK.
    • Link tham khảo: jqueryscript.net/other/Configurable-Session-Timeout-URL-Redirect-Plugin-Bootstrap.html
    ket-noi-lai-session.jpg
     
    Cảm ơn đã xem bài:

    Auto Keep Session Alive Timeout in MVC, tự động giữ thời gian sống session MVC

    danh sách diễn đàn rao vặt gov chất lượng
    seolagi thích bài này.
  2. seolagi

    seolagi

    Vip Member

    Tham gia ngày:
    16/4/14
    Bài viết:
    624
    Đã được thích:
    48
    Điểm thành tích:
    28
    Trời cái mình không biết làm từ rất lâu rồi, giờ mới thấy admin chỉ, chắc là 100% thành công rồi, mình cái vô web mình ngay, toàn bị mất session tức ghê lun.
    Cảm ơn ad
     


Like và Share ủng hộ ITSEOVN