首先建立一个过滤器 MyAuthorizeAttribute 继承AuthorizeAttribute,并重写 AuthorizeCoreide
public class MyAuthorizeAttribute : AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase httpContext) { string currentRole = httpContext.Request.Cookies["role"].Value; //从Session中获取User对象,而后获得其角色信息。若是用户重写了Identity, 则能够在httpContext.Current.User.Identity中获取 if (Roles.Contains(currentRole)) return true; return base.AuthorizeCore(httpContext); } }
而后controler 引用过滤器code
[MyAuthorize(Roles = "Admin")] public ActionResult Index() { return Content("过滤器经过了"); }
接下来再作一个受权不经过跳转到登陆界面的:对象
先重写HandleUnauthorizedRequest继承
/// <summary> /// 重写过滤不过跳转登陆界面 /// </summary> /// <param name="filterContext"></param> protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { filterContext.HttpContext.Response.Redirect("/Home/Login"); //base.HandleUnauthorizedRequest(filterContext); }
public ActionResult login() { return Content("这是登陆界面"); }