我有一个简单的 MVC 应用程序
我想首先检查 session 作为此操作

 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;

并在您的 Controller 中添加这样的 [SessionCheck] 属性
 [SessionCheck]
 public class HomeController : Controller
  {
  }

这将检查 Controller 的所有操作的 session ,或者您也可以在这样的操作上添加此属性
[SessionCheck]
public ActionResult Index()
 {
 }

关于c# - 检查 session 的 Controller 的所有 Action ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42818257/

10-11 02:45
查看更多