我正在创建一个MVC Web API应用程序,其中包含Web API控制器以及常规MVC控制器的表单身份验证。在表单身份验证cookie中,我存储了我需要阅读的用户信息,并将其传递给Web API操作方法。 我试图通过创建自定义Authorization属性并将此值添加到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();
}
}
答案 0 :(得分:0)
这真是我的愚蠢。顾名思义它就是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();
}