默认情况下,在控制器中执行任何操作之前自动运行一个方法

本文关键字:运行 方法 一个 情况下 控制器 操作 任何 执行 默认 | 更新日期: 2023-09-27 18:16:53

是否有任何方法在自动调用任何操作之前执行控制器中的方法?例如,假设我有用户的登录凭据存储在cookie中,我有一个用户控制器每当控制器中的任何动作被调用时,我都想检查用户是否登录。(而不是在每个动作中单独调用该方法)

 public ActionResult Test () {
     if (Checklogin()) {
         return View();
     }
     else {
        return new EmptyView();
    }
 }

我想让所有的方法都遵循这个逻辑,但不要在每个方法中单独定义这个

默认情况下,在控制器中执行任何操作之前自动运行一个方法

按照评论中的建议使用ActionFilter。如果不满足您的条件,例如cookie过期或其他情况,则调用用于在被覆盖的方法中显示错误消息的操作。

public class AuthenticationAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);
        if (Condition Not Met)
        {
            filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
            {
                controller = "Error Message Controller",
                action = "Error Message Action"
            }));
        }
    }
}