本文实例讲述了ASP。NET MVC使用ActionFilterAttribute实现权限限制的方法。分享给大家供大家参考,具体如下:ActionFilterAttribute是Action过滤类,该属于会在执行一个action之前先执行。而ActionFilterAttribute是 MVC的一个专门处理action过滤的类。
基于这个原理 我们做一个权限限制例如:如何访问 HomeController 里的test actionusing System;using System。Collections。Generic;using System。Linq;using System。
Web;using System。Web。Mvc;using MvcTest。Models;namespace MvcTest。Controllers{ public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { return View(); } [AuthorizeFilter] public ActionResult test() { return Content(“有权访问”); } }}建立AuthorizeFilterAttribute。
cs 内容如下using System;using System。Collections。Generic;using System。Linq;using System。Web;using System。Web。Mvc;namespace MvcTest。
Models{ /// <summary> /// 权限拦截 /// </summary> [AttributeUsage(AttributeTargets。Class | AttributeTargets。Method, AllowMultiple = false)] public class AuthorizeFilterAttribute : ActionFilterAttribute { filterContextInfo fcinfo; // OnActionExecuted 在执行操作方法后由 ASP。
NET MVC 框架调用。 // OnActionExecuting 在执行操作方法之前由 ASP。NET MVC 框架调用。 // OnResultExecuted 在执行操作结果后由 ASP。NET MVC 框架调用。 // OnResultExecuting 在执行操作结果之前由 ASP。
NET MVC 框架调用。 /// <summary> /// 在执行操作方法之前由 ASP。NET MVC 框架调用。 /// </summary> /// <param name=”filterContext”></param> public override void OnActionExecuting(ActionExecutingContext filterContext) { fcinfo = new filterContextInfo(filterContext); //fcinfo。
actionName;//获取域名 //fcinfo。controllerName;获取 controllerName 名称 bool isstate = true; //islogin = false; if (isstate)//如果满足 { //逻辑代码 // filterContext。
Result = new HttpUnauthorizedResult();//直接URL输入的页面地址跳转到登陆页 // filterContext。Result = new RedirectResult(“http://www。baidu。
com”);//也可以跳到别的站点 //filterContext。Result = new RedirectToRouteResult(new System。Web。Routing。RouteValueDictionary(new { Controller = “product”, action = “Default” })); } else { filterContext。
Result = new ContentResult { Content = @”抱歉,你不具有当前操作的权限!” };// 直接返回 return Content(“抱歉,你不具有当前操作的权限!”) } } /// <summary> /// 在执行操作方法后由 ASP。
NET MVC 框架调用。 /// </summary> /// <param name=”filterContext”></param> public override void OnActionExecuted(ActionExecutedContext filterContext) { base。
OnActionExecuted(filterContext); } /// <summary> /// OnResultExecuted 在执行操作结果后由 ASP。NET MVC 框架调用。 /// </summary> /// <param name=”filterContext”></param> public override void OnResultExecuted(ResultExecutedContext filterContext) { base。
OnResultExecuted(filterContext); } /// <summary> /// OnResultExecuting 在执行操作结果之前由 ASP。NET MVC 框架调用。 /// </summary> /// <param name=”filterContext”></param> public override void OnResultExecuting(ResultExecutingContext filterContext) { base。
OnResultExecuting(filterContext); } } public class filterContextInfo { public filterContextInfo(ActionExecutingContext filterContext) { #region 获取链接中的字符 // 获取域名 domainName = filterContext。
HttpContext。Request。Url。Authority; //获取模块名称 // module = filterContext。HttpContext。Request。Url。Segments[1]。Replace(‘/’, ‘ ‘)。
Trim(); //获取 controllerName 名称 controllerName = filterContext。RouteData。Values[“controller”]。ToString(); //获取ACTION 名称 actionName = filterContext。
RouteData。Values[“action”]。
ToString(); #endregion } /// <summary> /// 获取域名 /// </summary> public string domainName { get; set; } /// <summary> /// 获取模块名称 /// </summary> public string module { get; set; } /// <summary> /// 获取 controllerName 名称 /// </summary> public string controllerName { get; set; } /// <summary> /// 获取ACTION 名称 /// </summary> public string actionName { get; set; } }}完整实例代码点击此处本站下载。

相关推荐