在做后台管理時用戶登錄后就需要驗證哪些權限了,沒有登錄的就直接退出到登錄頁面。
系統有自帶的權限[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]就行了。