默认情况下,在控制器中执行任何操作之前自动运行一个方法
本文关键字:运行 方法 一个 情况下 控制器 操作 任何 执行 默认 | 更新日期: 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"
}));
}
}
}