gpt4 book ai didi

asp.net-mvc - 如果 session 在 mvc 中过期,则从 ActionFilter 显示弹出窗口

转载 作者:行者123 更新时间:2023-12-04 23:55:41 26 4
gpt4 key购买 nike

我们使用 mvc 创建了一个网站,其中我有 3 个 Controller :

AccountController
HomeController
ContactController

我们在 ActionFilters 中编写了自定义授权,我们正在其中检查 session 是否已过期。如果 session 过期,我们将重定向到登录页面。这是 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;

}
}
}

这非常有效,即当 session 过期并且用户单击网站上的任何链接时,他将被重定向到地址为

的登录页面
http://websitename/Account/Login

但是现在我们想在页面上显示一个弹出窗口(无论用户在哪个页面),它将显示消息“该 session 已过期”,并且在关闭该弹出窗口时,用户将被重定向到登录页面。

我无法弄清楚如何从 ActionFilter 本身调用 Jquery 弹出窗口。我在网上搜索了很多解决方案,但找不到正确的解决方案。有人建议使用 HandleUnauthorizedRequest 来调用 Action 方法 ( Call RedirectToAction from ActionFilter )。但是,我很困惑是在我的代码中只使用 HandleUnauthorizedRequest 还是同时使用它和 OnAuthorization 。有人可以提出解决方案吗?

注意:我有一个通用 View ,我可以在其中保留要在整个网站上使用的弹出窗口的 html。

最佳答案

我在考虑一个使用变量的解决方案,并且根据该变量,您会显示或不显示弹出窗口。我懒得实际编写代码,但我找到了一个描述解决方案的链接:

ASP.NET MVC Authorize Attribute to launch a modal?

关于asp.net-mvc - 如果 session 在 mvc 中过期,则从 ActionFilter 显示弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32651699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com