mvc权限验证--AuthorizeAttribute

在做后台管理时用户登录后就需要验证哪些权限了,没有登录的就直接退出到登录页面。

系统有自带的权限[Authorize],可用于几个地方:

1、将属性[Authorize]置于相关的action上方,验证当前

[Authorize]
 public ActionResult Index()
 {
     return View();
 }

2、将属性[Authorize]置于控制器上方

[Authorize]
public class MainController : Controller
{
    //
}

3、将Authorize应用到全局范围类,加入全局过滤器集合RegisterGlobalFilters方法,\App_Start\FilterConfig.cs:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
      filters.Add(new AuthorizeAttribute()); //新加行
      filters.Add(new HandleErrorAttribute());
}

PS:如果有些控制器的action方法不需要验证,则在action上添加属性[AllowAnonymous]

但系统自带的不一定我们适用,这就要我们自定义了,规则我们可以自己写

新建AdminAuthorizeAttribute类,继承AuthorizeAttribute类,重写AuthorizeCore、HandleUnauthorizedRequest方法

     protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if (httpContext.Session["username"] != null)
            {
                return true;
            }
            return false;
        }

        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            filterContext.HttpContext.Response.Redirect("/Admin/Account/Login");
        }

用法同上,把[Authorize]改为[AdminAuthorizeAttribute]就行了。

posted @ 2015-03-20 10:52  ♀影☆响  阅读(1418)  评论(9编辑  收藏  举报