asp.net-mvc - 如何将数据从自定义授权属性传递到 Web api 操作方法?

标签 asp.net-mvc asp.net-web-api2

我正在创建一个 MVC Web API 应用程序,该应用程序具有 Web API Controller 以及常规 MVC Controller 的表单例份验证。在表单例份验证 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;

            }
        }
    }

这是 Controller 代码

[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();
        }

这里是通过 Action 参数

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

关于asp.net-mvc - 如何将数据从自定义授权属性传递到 Web api 操作方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35922431/

相关文章:

asp.net-web-api2 - 基于参数值的 Web API 2 路由

c# - 在 Entity Framework 6 中返回时更改属性名称

c# - 使用 HttpClient 将文件上传到 ASP.NET WebApi 2

asp.net-mvc - Azure 上的慢速 HTTP POST 漏洞

javascript - 我的 asp.net 应用程序的 Excel 网格

asp.net - 重新部署后不记名 token 失效

asp.net - ASP MVC 更改不发送任何请求的用户的 cookie 值

javascript - react 如何将数据从后端推送到前端

c# - WebAPI Controller 中的 ConfigureAwait(false)

HTML/CSS 布局