Мы создали сайт, используя MVC где у меня есть 3 контроллеры:Показать всплывающее окно с ActionFilter, если сессия истекает в MVC
AccountController
HomeController
ContactController
Мы написали на заказ Авторизация в ActionFilters, где мы проверяем, истек ли срок действия сеанса или нет. Если сеанс истекает, мы перенаправляемся на страницу входа. Это код в ActionFilter:
public override void OnAuthorization(AuthorizationContext filterContext)
{
var user = filterContext.HttpContext.User;
var UserProcesses = HttpContext.Current.Session["UserProcesses"] != null ? ((List<string>)HttpContext.Current.Session["UserProcesses"]) : null;
var currentRequest = filterContext.ActionDescriptor.ActionName.ToLower();
var currentController = filterContext.RouteData.Values["controller"].ToString();
if (!string.IsNullOrEmpty(currentController))
{
switch (currentController.ToLower())
{
case "home":
{
if (UserProcesses == null)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(
new
{
Controller = "Account",
Action = "Login"
})
);
}
break;
case "contact":
{
if (UserProcesses == null)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(
new
{
Controller = "Account",
Action = "Login"
})
);
}
break;
}
}
}
Это отлично работает т.е. когда сессия истекает, и пользователь нажимает на любую ссылку на веб-сайте, он будет перенаправлен на страницу входа в адрес которого является
http://websitename/Account/Login
Но теперь мы хотим отобразить всплывающее окно на странице (на любой странице, на которой находится пользователь), которая покажет сообщение «Этот сеанс истек», и после отклонения этого всплывающего окна пользователь затем перенаправляется на страницу входа.
Я не могу понять, как вызвать всплывающее окно JQuery из самого ActionFilter. Я искал множество решений в Интернете, но не смог найти правильное решение. Кто-то предложил использовать HandleUnauthorizedRequest для вызова метода действия (Call RedirectToAction from ActionFilter). Однако я смущен, следует ли использовать только HandleUnauthorizedRequest или использовать оба этих и OnAuthorization в моем коде. Может кто-нибудь предложить решение?
Примечание: У меня есть общий вид, в котором я могу сохранить html для всплывающего окна для использования на веб-сайте.
Я думаю, что этот пост решает проблему: http://stackoverflow.com/questions/2174713/asp-net-mvc-authorize-attribute-to-launch-a-modal –
@MariusB ДА !!! Это решает мою проблему :) Большое спасибо. Можете ли вы написать это как ответ, чтобы я мог принять его? – nitinvertigo
Я рад, что он решил вашу проблему. :) –