C# 从Web API控制器在AuthenticationFilter中创建的访问对象

C# 从Web API控制器在AuthenticationFilter中创建的访问对象,c#,asp.net-web-api2,actionfilterattribute,C#,Asp.net Web Api2,Actionfilterattribute,我已经在一个WebAPI2项目中实现了HMAC身份验证过滤器(按照)。本文使用静态密钥进行演示,因此我修改了过滤器,以便使用“AppId”Guid从数据库中查找私有API密钥。这很好地工作,因为我能够为该AppId条目加载适当的帐户。但我想知道是否有可能访问在控制器的身份验证筛选器类中创建的“Account”对象 以下是我声明对象的方式: public class HMACAuthenticationAttribute : Attribute, IAuthenticationFilter

我已经在一个WebAPI2项目中实现了HMAC身份验证过滤器(按照)。本文使用静态密钥进行演示,因此我修改了过滤器,以便使用“AppId”Guid从数据库中查找私有API密钥。这很好地工作,因为我能够为该AppId条目加载适当的帐户。但我想知道是否有可能访问在控制器的身份验证筛选器类中创建的“Account”对象

以下是我声明对象的方式:

public class HMACAuthenticationAttribute : Attribute, IAuthenticationFilter
    {
        private static Dictionary<string, string> allowedApps = new Dictionary<string, string>();
        public DummyAccount account = new DummyAccount();
    }
现在在我的WebApi控制器中,代码如下所示:

        [HMACAuthentication]
        [HttpPost]
        public RatingDto Post(SearchTrackDto searchedTrack)
        {

            // Access 'account' object here?

        }

我的期望是,我可以以某种方式直接访问account对象,这样我就不必再次解析请求并进行第二次数据库查询。将对象存储在Request.Context中会是一种方法吗?还有什么选择?

您可以尝试实现缓存。AuthenticationFilter应该验证每个请求,因为只要请求死亡,上下文生存期范围就是有效的

        [HMACAuthentication]
        [HttpPost]
        public RatingDto Post(SearchTrackDto searchedTrack)
        {

            // Access 'account' object here?

        }