在 AuthorizeAttribute Mvc Core Web Api 中获取控制器实例

2024-03-13

我使用下面的类来控制我的 api 方法请求,并设置 BaseController 类的一些属性以在方法中常用。 这个来自 Asp.Net Mvc Web Api

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using System.Web.Http.Controllers;

[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class AuthUserAttribute : AuthorizeAttribute
{

    private string Action { get; set; }

    public AuthUserAttribute(string action)
    {
        this.Action = action;
    }

    public override void OnAuthorization(HttpActionContext actionContext)
    {
        BaseController baseController = httpContext.ControllerContext.Controller as BaseController;
        baseController.someCommenProperty = someValue;
    }
}

但是当我尝试在 Asp.Net Mvc Core Api 中实现相同的结构时 我无法到达初始化的控制器实例。 有什么办法可以让我得到这个实例吗?

使用 Microsoft.AspNetCore.Authorization;

using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.Primitives;
using System;
using System.Linq;

[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class AuthUserAttribute : AuthorizeAttribute, IAuthorizationFilter
{


    private string Action { get; set; }
    public AuthUserAttribute(string action)
    {
        this.Action = action;
    }



    public void OnAuthorization(AuthorizationFilterContext context)
    {
        // how to get controller instance from context
    }
}

您可以使用context.ActionDescriptor得到Type控制器上的信息。
控制器object在授权检查时可能根本没有实例化。
您还可以实施IActionFilter并使用其中的控制器实例

public void OnActionExecuting(ActionExecutingContext context)

and

public void OnActionExecuted(ActionExecutingContext context)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 AuthorizeAttribute Mvc Core Web Api 中获取控制器实例 的相关文章

随机推荐

  • 在 Fortran 中写入现有文件而不覆盖

    我有一个由 Fortran 程序编写的现有文件 已格式化 我想在文件开头添加几行 我们的想法是在不复制原始文件的情况下完成此操作 我可以在文件末尾添加一行 open 21 file myfile dat status old action
  • 从 Java 7 升级到 Java 8 后签名引用失败

    我最近已将 Java 从 7 升级到 8 并且我面临使用 saml 请求的服务之一的问题 我收到以下错误 Jan 05 2015 3 42 06 PM org jcp xml dsig internal dom DOMReference v
  • 在项目的根目录下创建 .env 文件

    我正在尝试从 github 下载一个 Django 项目 其中一个要求是 由于该项目使用 python de Couple 因此您需要在项目的根目录上创建一个名为 env 的文件 其中包含三个值 如下所示 DEBUG True SECRET
  • 将单词 (.docx) 转换为 docbook

    我的任务是找到一种将大量 docx 文件转换为 docbook 5 的方法 目前 我们在 openoffice 中打开该文件并保存到 docbook 这是一项耗时的任务 但我相信有更好的方法 然后 这些文件将被进一步处理为我们的自定义rel
  • 如何在 CMake 中删除字符串中的一行文本,解决 CMake 缺乏基于行的正则表达式匹配的问题?

    我发现 CMake 并没有按照我预期的方式执行 RegEx 显然 其他人也遇到了同样的问题 https cmake org pipermail cmake 2007 October 017107 html问题是 CMake 不是基于行的 当
  • Pip无法安装枕头

    当尝试使用 pip 安装枕头时 会产生此错误 我尝试过重新安装安装工具 但没有效果 我在安装了 Diet Pi 的 pi 0 上运行 pip install pillow Looking in indexes https pypi org
  • Objective-C 中的文本解析?

    是否有任何库可以在 Objective C iPhone 应用程序中解析 Textile Textile 到 HTML C 库也可以工作 Update 我在 C Obj C 中找不到任何足够开发的库 但我确实找到了一个用 Javascrip
  • 多态性、泛型和匿名类型 C#

    考虑以下场景 文档 gt 部分 gt 正文 gt 项目 文档有部分 部分包含正文 正文有一些文本和项目列表 这些项目就是问题的内容 有时项目是基本的字符串列表 但有时项目包含自定义数据类型的列表 So public class Docume
  • 为什么 git Remote prune origin 会删除我的本地标签?

    我有几个标记引用来自本地分支和远程跟踪分支的提交 或这些提交的祖先 我想删除对分支和标签的引用origin跑完后git fetch git remote prune origin dry run 但输出表明它会修剪我的本地标签 即使是我手动
  • YDN DB 包含问题

    我已经包含了 YDN DB 文件 ydn db isw core crypt qry dev js 来加密角度应用程序中的索引数据库 它被添加到 socket io 1 4 5 js 之后的 index html 主体部分中 加载器 spi
  • 从 saber API 发出票据

    我们已经成功实施了 sabre 低价搜索和预订工作流程并创建了 PNR 现在 我想使用 api 开具该 PNR 的机票 My workflow is 1 BargainFinderMaxRQ find 2 EnhancedAirBook b
  • 通过surfaceview使用zxing条码阅读器

    我正在创建一个扫码机应用程序 我想使用Zxing要读取条形码 我的应用程序有一个表面视图并向其中显示相机 但现在我想从 SurfaceView 相机扫描条形码 我使用它的原因是我的布局中的表面视图下有两个 Edittexts 来显示条形码的
  • 如何处理损坏的 Git 对象文件?

    当我接近配额时 我做了一次 Git pull 结果 我认为 得到了一个损坏的文件 git pull walk dffbfa18916a9db95ef8fafc6d7d769c29a445aa fatal object d4a0e759949
  • 是否可以从 Scala(spark) 调用 python 函数

    我正在创建一个 Spark 作业 需要使用用 python 编写的函数将列添加到数据帧中 其余的处理是使用 Scala 完成的 我找到了如何从 pyspark 调用 Java Scala 函数的示例 https community hort
  • 安装 MSDeploy 包时如何保留现有文件?

    我需要保留一些由我的网站生成的文件 是否可以使 MSDeploy 不删除任何文件 并且仅当包包含较新版本的文件时才覆盖现有文件 enableRule 跳过新文件规则将跳过对具有较新写入时间的文件的更新 enableRule 不删除规则将阻止
  • 如何移动然后删除MySQL中的字段

    我试图将字段从一个表移动到另一个表 然后从第一个表中删除它 我遇到的问题是它可以很好地移动数据 但不会从第一个表中删除它 这是我的代码 INSERT INTO out tickets SELECT FROM tickets DELETE F
  • 什么推理导致“包含递归定义的序列表达式编译不正确”

    问题尽管尾调用位置存在堆栈溢出 但仅限 64 位 https stackoverflow com q 35751350 1243762导致发现一个bug https github com Microsoft visualfsharp iss
  • 参数类型“Map Function()”无法分配给参数类型“Map

    这最初可能有效 但在 firebase 更新后 现在给我这个错误 我已在给出错误的部分添加了星号 错误消息已添加到代码下方 import package cloud firestore cloud firestore dart class
  • Grails 从服务中渲染视图?

    我刚刚开始在 Grails 中使用服务 在尝试从服务内部渲染页面时遇到问题 我尝试了如下所示的几种方法 但没有成功 服务电话 1 GroupCheckService isEnabled userObjects group notenable
  • 在 AuthorizeAttribute Mvc Core Web Api 中获取控制器实例

    我使用下面的类来控制我的 api 方法请求 并设置 BaseController 类的一些属性以在方法中常用 这个来自 Asp Net Mvc Web Api using System using System Collections Ge