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]就行了。

你可能感兴趣的:(attribute)