gpt4 book ai didi

c# - ASP.NET 从 AuthorizeAttribute 方法访问 Controller 属性

转载 作者:行者123 更新时间:2023-11-30 21:43:01 24 4
gpt4 key购买 nike

我使用 MVC 4 项目为 API 创建了一个基本 Controller 。一切如我所愿,但为了提高效率,我希望能够通过 OnAuthorization 方法从我的基本 Controller 访问一些自定义属性。我需要执行一些 SQL 查询以确保访问 token 有效等等。我宁愿进行一次此查询并将该对象作为属性存储在 Controller 上,这样我以后就可以访问它而无需再次进行查询。

简而言之,这就是我想做的。

[APIActionFilter]
public class APIBaseController : ApiController
{
public APIClient client;
public class APIActionFilter : System.Web.Http.AuthorizeAttribute
{
public override void OnAuthorization(HttpActionContext filterContext)
{
//get data from the database.
Controller.client = objectmadefromdb;
}
}
}

必须有一个对该对象的引用传递到某处?

最佳答案

第一条评论大致是这样,但不正确。我能够使用以下

public override void OnAuthorization(HttpActionContext filterContext)
{
var controllerRef = filterContext.ControllerContext.Controller as APIBaseController;
controllerRef.userdata = new user("123");
}

我现在可以从主 Controller 访问属性。我能够在 APIBaseController 对象上设置一些公共(public)属性并直接为它们赋值。当然可以使用 getter 和 setter 或其他任何东西。

为了确认它的工作原理,我能够创建一个继承基本 Controller 的新 Controller 。从该 Controller 中的任何操作,我都能够访问 APIBaseController 对象的属性,并且它们填充了我在 OnAuthorization 方法中设置的数据。

关于c# - ASP.NET 从 AuthorizeAttribute 方法访问 Controller 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42091811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com