Как перенаправить на главную страницу входа, когда сеанс истекает в Asp.net? - PullRequest
0 голосов
/ 22 мая 2019

Я разработал приложение в Asp.Net MVC с использованием языка программирования C # и сначала использую код. Приложение развернуто, и все работает правильно, за исключением незначительной проблемы, с которой я сталкиваюсь.

Когда сеансистек срок действия, он не перенаправляет пользователя на главную страницу входа в приложение, где я хочу, чтобы приложение перенаправляло пользователя на главную страницу входа в систему, когда сеанс истек.

Как это возможно?

1 Ответ

0 голосов
/ 22 мая 2019

Существует множество примеров функциональности, которую вы хотите достичь, но я хотел дать вам базовый сценарий того, как вы будете перенаправлять на страницу входа в систему по истечении сеанса или когда пользователь выходит из системы:

При условии, что вы настроили сеанс, когда пользователь выйдет из системы, контроллер будет иметь метод выхода из системы:

public ActionResult Logout()
 {
   Session.Abandon();
   Session.Clear();
   return RedirectToAction("LoginPage", "Login");
 }

Это приведет к уничтожению переменных сеанса и перенаправлению пользователя на страницу входа.

Теперь, когда сессия истекает, вы можете сделать что-то вроде этого:

public ActionResult SessionCheck()
 {
   string message = string.Empty;
   if (Session["UserName"] == null)
    {
      message = "Session expired. Please Login again";
    }
    return Json(message, JsonRequestBehavior.AllowGet);
  }

Вы можете проверить этот метод во всей вашей программе, используя AJAX, или вы можете использовать SessionState.

Я предпочитаю использовать AJAX, поэтому приведу простой пример:

function IsSessionActive()
{
    var url ="/Login/SessionCheck";
    var param = {};
    param = JSON.stringify(param);
    var result = getResultPost(url, param);
    if (result != "")
    {
        alert("Session has expired, Please login again");
        //Redirect Here
        window.location="@Url.Action("LoginPage", "Login")";
        return true;
    }
}

function getResultPost(url, param) {
    var result;

    $.ajax({
        url: url,
        type: "POST",
        async: false,
        dataType: "json",
        data: param,
        contentType: "application/json; charset=utf-8",
        success: function (data, textStatus) {
            result = data; 
        },
        error: function (e) {             
            result = "Error";
        }          
    }); 
    return result;
}

И, наконец, назовите это в своем View как:

$(document).ready(function () {
    if (IsSessionActive()) return false;
})

Это будет проверять сеанс на каждой странице, которую вы вызываете этим методом, и, если сеанс истек, он предупредит пользователя и перенаправит на страницу входа. Вы можете настроить свои собственные стили, такие как модальное или настраиваемое окно предупреждения, чтобы показать пользователю, что их сеанс истек. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...