MVC中的过滤器/拦截器怎么写
创建一个AuthenticateFilterAttribute(即过滤器/拦截器)
引用System.Web.Mvc;
public class AuthenticateFilterAttribute: ActionFilterAttribute,IActionFilter { public override void OnActionExecuting(ActionExecutingContext filterContext) { // Action或Controller上定义了[AllowAnonymousAttribute] var hasAllowAnymous = filterContext.ActionDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true) || filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(AllowAnonymousAttribute), true); if (hasAllowAnymous) return; // 不需要登录,则通过。 var session = filterContext.HttpContext.Session; if (session == null) return; //下面就是写过滤的条件,一般来说就是判断session是否过期,跳转到登陆页面。 //以及判断角色,身份 } }
在FilterConfig.cs中添加指定的筛选器
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new AuthenticateFilterAttribute()); } }
在Global.asax中获取或设置全局筛选器集合。
public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); } }
好了,这下子就完成了。在用户进行某些操作之前判断是否授权。