相信很多使用ASP.NET MVC开发模式的人都有过体会,怎么限制页面只能是授权用户才能访问?具体应该怎么操作呢?这里我用到的是过滤器中的自定义过滤器,规则由自己制定。
自定义授权过滤器可以继承AuthorizeAttribute这个类,这个类里面有两个方法是要重写的
1、bool AuthorizeCore(HttpContextBase httpContext):这里主要是授权验证的逻辑处理,返回true的则是通过授权,返回了false则不是。
2、void HandleUnauthorizedRequest(AuthorizationContext filterContext):这个方法是处理授权失败的事情。
下面定义一个授权处理器,当请求的时候刚好是偶数分钟的,就通过可以获得授权,反之则不通过。当授权失败的时候,就会跳转到登陆页面了。
public class MyAuthorizeAttribute:AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
//为偶数分钟时才可访问
return DateTime.Now.Minute % 2 == 0
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
//失败后跳转到登陆界面
filterContext.HttpContext.Response.Redirect(“/Customer/Login”);
}
}
然后用到一个行为方法上,
[MyAuthorize]
public ActionResult ShowDetail()
{
return View();
}
这样就完成了一个简单的自定义过滤器了!
当然,过滤器有很多种,我现在讲的只是其中的一种,后面会陆续给大家讲解其他的几种过滤器形式。