首页 > 编程语言 >asp.net core的授权过滤器中获取action上的Attribute

asp.net core的授权过滤器中获取action上的Attribute

时间:2024-09-16 15:13:39浏览次数:7  
标签:core asp HtmlReturnResultType Attribute context action 权限 public 页面

今天在做权限开发的时候,在控制器的方法上添加了一些特性,希望在过滤器中获取到这些特性,查找了一些资料,终于找到了办法:

var action = context.ActionDescriptor as ControllerActionDescriptor;
var permission = action.MethodInfo.GetCustomAttribute<PermissionAttribute>();

具体的实现代码如下:

 /// <summary>
 /// 国际差旅住宿标准的保存
 /// </summary>
 /// <returns></returns>
 [AuthorityTypeCodeAttribute("B000051", HtmlReturnResultType.JSON)]
 public ActionResult InternationalHotelSave()
 /// <summary>
 /// 页面请求返回的字符串类型
 /// </summary>
 public enum HtmlReturnResultType
 {
     JSON = 0,
     HTML = 1
 }

 /// <summary>
 /// 页面菜单中权限标识的特性,设置控制器中的方法的权限标识符
 /// </summary>
 [AttributeUsage(AttributeTargets.All, AllowMultiple = false)]
 public class AuthorityTypeCodeAttribute : Attribute
 {
     /// <summary>
     /// 页面的权限标识,也就是 页面标签 的编码,例如: B000051 ,在页面菜单权限中设置
     /// </summary>
     public string AuthorityCode { get; set; }
     /// <summary>
     /// 返回的结果类型
     /// </summary>
     public HtmlReturnResultType ReturnResultType { get; set; }
     /// <summary>
     /// 页面菜单中权限标识的特性
     /// </summary>
     /// <param name="_AuthorityCode"></param>
     /// <param name="htmlReturnResult">页面请求返回的字符串类型</param>
     public AuthorityTypeCodeAttribute(string _AuthorityCode, HtmlReturnResultType htmlReturnResult) {
         this.AuthorityCode= _AuthorityCode;
         this.ReturnResultType = htmlReturnResult;
     }
 }

只摘取过滤器中的部分代码:

 public class GDCActionFilter : IActionFilter
 {
     public void OnActionExecuting(ActionExecutingContext context)
     {
         string lk = GDCUtility.GetParamNoSpace("lk");
         UserInfoModel um = GDCObjectInfosBLL.CurrentUserBLL.GetLoginInfo(lk);

         #region 判断权限
         var action = context.ActionDescriptor as ControllerActionDescriptor;
         var permission = action.MethodInfo.GetCustomAttribute<AuthorityTypeCodeAttribute>();
         if (permission != null)
         {
             string authorityCode = permission.AuthorityCode;
             HtmlReturnResultType htmlReturnResultType = permission.ReturnResultType;
             bool userMenuButtonAuthority = GDCObjectInfosBLL.CurrentAuthorityBLL.UserMenuButtonAuthority(um, authorityCode);
             if (!userMenuButtonAuthority)
             {
                 ResultInfoModel rim = new ResultInfoModel("02", "未授权,非法请求!");
                 if (htmlReturnResultType == HtmlReturnResultType.HTML)
                 {
                     context.Result = GDCHttpContext.GDCGetViewResultError(rim);// result;
                 }
                 else if(htmlReturnResultType == HtmlReturnResultType.JSON)
                 {
                     context.Result = new Microsoft.AspNetCore.Mvc.JsonResult(rim);
                 }
                 return;
             }
         }
         #endregion

 

标签:core,asp,HtmlReturnResultType,Attribute,context,action,权限,public,页面
From: https://www.cnblogs.com/huaan011/p/18416293

相关文章

  • OpenCore引导安装苹果系统,VMware虚拟机安装苹果系统
    Windows下VMware虚拟机安装macOS系统,常规安装都需要使用到unlocker解锁工具.而直接使用OpenCore引导安装,就可以不使用unlocker解锁工具也能安装macOS系统,使用OpenCore引导的优点还是有的,比如改系统的三码或五码还是比较方便,这里将最近配置的OpenCore引导分享给大家一起研究.......
  • OpenCore Legacy Patcher 2.0.0 发布,83 款不受支持的 Mac 机型将能运行最新的 macOS S
    在不受支持的Mac上安装macOSSequoia(OpenCoreLegacyPatcherv2.0.0)InstallmacOSonunsupportedMacs请访问原文链接:https://sysin.org/blog/install-macos-on-unsupported-mac/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org随着OpenCoreLegacyPatcher......
  • aspcms webshell漏洞复现
    1.【ip】/admin_aspcms/login.asp访问后台,admin123456登录2.点击【扩展功能】【幻灯片设置】点击【保存】开启代理进行抓包3.在抓取的数据包中修改slideTextStatus字段的值为以下代码并进行发包访问影响文件字段值1%25><%25Eval(Request(chr(65)))%25><%25密码是......
  • 2、.Net 前端框架:ASP.Net Core - .Net宣传系列文章
    ASP.NETCore是一个跨平台、高性能、开源的框架,用于构建现代化的、基于云的、互联网连接的应用程序。它是微软对原始ASP.NET框架的重构和扩展,提供了更多的灵活性和改进的性能。ASP.NETCore可以用于开发Web应用程序、WebAPI、以及服务端渲染的Web页面。ASP.NETC......
  • 使用NSSM把.Net Core部署至 Windows 服务
    1、官网http://www.nssm.cc/,下载地址http://www.nssm.cc/download2、下载后解压到自己喜欢的目录如:F:\work\nssm-2.24\win643、以管理员权限打开命令行工具,切换到nssm.exe所在路径,运行nssminstall,打开程序配置界面4、选择要部署的exe文件指定监听地址和端口如:dockerDemo.e......
  • 至强Xeon与酷睿Core处理器的详细对比分析
    引言在选择计算机处理器时,英特尔的至强(Xeon)和酷睿(Core)系列是两个备受关注的选择。尽管它们都属于英特尔的产品线,但设计目标、应用场景、性能表现以及价格等方面存在显著差异。本文将从多个维度详细分析这两类处理器的区别,并通过具体例子进行说明。 一、设计目标与应用场景......
  • [2023最新]美少妇Metasploit(MSF)下载安装及使用详解,永久免费使用,环境配置和使用技巧
    模块含义auxiliary:主要包含渗透测试中一些辅助性脚本,这些脚本功能有扫描,嗅探,破解,注入,漏洞挖掘等。encoders:编码工具,用于躲过入侵检测和过滤系统。exploit:主要包括了exp、0day、各种漏洞利用的脚本。主要的攻击代码全在这个目录下,这里边包括的exp的路径的命名规则是:......
  • asp6学习
    http://localhost:81/khzj/mapmoveend.asphttp的报头会有一些客户端的信息,将ASP6网站部署在公网服务器上,通过Request.ServerVariables("REMOTE_ADDR")或Request.ServerVariables("REMOTE_HOST")可获取客户端的公网IP。使用ASP的Server.CreateObject方法可以创建对象的实......
  • NetCore DynamicExpresso 动态表达式使用例子
    Simple.cs简单使用例子usingDynamicExpresso;namespaceDynamicExpressoDemo{classCustomer{publicstringName{get;set;}}publicclassSimple{publicstaticvoidTest(){//返回结果Interpreter......
  • asp6
    svn://gitee.com/Ivanhan2019/GGLD:\RedMoonSvr\GGLhttp://localhost:81/login.asp?GameID=juese1D:\RedMoonSvr\GGL>ls-1111111111111.asp2.sql222222.aspCheckLogin.asp角色登录密码、验证码检测Conn.aspGetCode.aspItemShopRMCGM.ASPSQLlianjie.aspWeb.configasdr......