我正在创建一个 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/