Syed Salman Raza Zaidi Ответов: 0

Очистка сеанса Mvc в строке запроса


Я написал пользовательский actionfilter для управления сеансами, поэтому пользователь не может получить доступ к странице без входа в систему. Это мой атрибут
 public class CustomAuthorizeAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

        if (filterContext.HttpContext.Session.Keys.Count == 0)
        {
            filterContext.HttpContext.Response.Redirect("/Home/Login?msg=" + HttpUtility.UrlEncode("Session Expired"));
            //filterContext.HttpContext.Response.Redirect("/Home/Login?ReturnUrl="
            //    + HttpUtility.UrlEncode(filterContext.HttpContext.Request.RawUrl));
        }
    }
}


Я проверяю сеанс и передаю сообщение в строке запроса,чтобы показать, истек ли сеанс.
это будет мой url-адрес, если сеанс истечет
http://localhost:5003/Home/Login?msg=session + истек срок годности

Проблема, с которой я сталкиваюсь, заключается в том, что если я войду в систему с вышеуказанного url-адреса и перейду к любому другому виду(после домашней страницы), я получу
filterContext.HttpContext.Session.Keys.Count=0


но если я перейду к тому же виду с этим url-адресом
http://localhost:5003/Home/Login[^]
количество сеансов отображается правильно(то есть 1).

Что я уже пробовал:

Это мой логин
var userdetails= usersBLL.GetAgentUserDetails (модель.Параметры login_id модели.Пароль);
if (userdetails!=null){
Сессия ["имя пользователя"]=модель.ЛОГИН;
// Перенаправление на домашнюю страницу
}

Richard Deeming

Зачем вы изобретаете колесо? ASP.NET MVC уже предоставляет [Authorize] атрибут и несколько встроенных систем аутентификации - например, Личность ASP.NET [^].

0 Ответов