Очистка сеанса 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 [^].