视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ASP.NET MVC使用ActionFilterAttribute实现权限的方法(附demo源码下载)
2020-11-27 22:37:54 责编:小采
文档

本文实例讲述了ASP.NET MVC使用ActionFilterAttribute实现权限的方法。分享给大家供大家参考,具体如下:

ActionFilterAttribute是Action过滤类,该属于会在执行一个action之前先执行.而ActionFilterAttribute是 MVC的一个专门处理action过滤的类.基于这个原理 我们做一个权限

例如:如何访问 HomeController  里的test  action

using 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; }
 }
}

完整实例代码点击此处本站下载。

希望本文所述对大家asp.net程序设计有所帮助。

下载本文
显示全文
专题