如何将数据从自定义授权属性传递到 web api 操作方法?

How to pass data from custom authorize attribute to web api action method?

我正在创建一个 MVC Web API 应用程序,其中包含 Web API 控制器和常规 MVC 控制器的表单身份验证。在表单身份验证 cookie 中,我存储了我需要读取的用户信息并将其传递给 Web API 操作方法。 我试图通过创建自定义授权属性并将该值添加到 ActionArguments 来实现这一点。但是我不知道如何在 Web API 操作中访问此数据。下面是代码块

public class MyAuthorization : AuthorizeAttribute
    {
        public override void OnAuthorization(HttpActionContext actionContext)
        {
            var isAuthorised = base.IsAuthorized(actionContext);

            if (isAuthorised)
            {
                var cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
                var ticket = FormsAuthentication.Decrypt(cookie.Value);
                var identity = new GenericIdentity(ticket.Name);
                actionContext.ActionArguments["UserInfo"] = ticket.UserData;

            }
        }
    }

这是控制器代码

[RoutePrefix("api/test")]
    [MyAuthorization]
    public class TestWebAPIController : ApiController
    {
        [HttpGet]
        [Route("")]       
        public IHttpActionResult Get() {
            //How to get it here
            return Ok();
        }
    }

我真是太蠢了。顾名思义,它就是 ActionArgument (actionContext.ActionArguments)。因此,可以通过 ActionContext.ActionArguments 或直接通过传递操作参数在 Web API 控件中轻松访问它。

这是 ActionContext.ActionArguments

的代码示例
public IHttpActionResult Post() {
            var userInfo = ActionContext.ActionArguments["UserInfo"];
            return Ok();
        }

这里是通过动作参数

  public IHttpActionResult Post(UserInfo userinfo) {
       //Code here
        return Ok();
     }