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