我有一个简单的 MVC 应用程序
我想首先检查此操作的会话
public ActionResult Index()
{
if (Session["UserInfo"] == null)
{
return RedirectToAction("Login", "Users");
}
return View();
}
我的问题是关于
有没有办法对所有操作强制执行此检查,而无需对每个操作进行手动检查?
您可以使用OnActionExecuting
并且还可以重写此方法来编写自定义逻辑,因此创建一个类
public class SessionCheck: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpSessionStateBase session = filterContext.HttpContext.Session;
if (session != null && session["UserInfo"] == null)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {
{ "Controller", "Users" },
{ "Action", "Login" }
});
}
}
}
在类中添加命名空间
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
并在你的控制器中添加[SessionCheck]
像这样的属性
[SessionCheck]
public class HomeController : Controller
{
}
这将检查控制器所有操作的会话,或者您也可以在操作上添加此属性,如下所示
[SessionCheck]
public ActionResult Index()
{
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)