我上的身份验证方法使用的工作对我来说是令牌网络API .NET项目,所以我重写这样一些方法:如何从Web Api .Net中的AuthorizeAttribute检索POST参数?
public class Authorizetest: System.Web.Http.AuthorizeAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if(Authorize(actionContext))
{
return;
}
HandleUnauthorizedRequest(actionContext);
}
protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
base.HandleUnauthorizedRequest(actionContext);
}
private bool Authorize(HttpActionContext actionContext)
{
try
{
var context = new HttpContextWrapper(HttpContext.Current);
HttpRequestBase request = context.Request;
string token = request.Params["Token"];
return true;
}
catch (Exception)
{
return false;
}
}
}
我使用的装饰[Authorizetest]
在这条路上:
[Authorizetest]
public class DoActionController : ApiController
{
[HttpPost]
public Display DoSomething(Parameter param)
{
//do something
return display;
}
}
但是request.Params
返回null
但是在DoSomething
方法我从Parameter
得到的值。
我也试过类似:(基于this page)
HttpRequestBase request = actionContext.RequestContext.HttpContext.Request;
string token = request.Params["Token"];
,但它无法获取通过POST方法发送的任何值。
我使用jQuery发送数据
$.ajax({
type: 'POST',
url: '/DoSomething',
data: JSON.stringify({ "Token": "xxxxxxxxx"}),
contentType: 'application/json; charset=utf-8',
success: function (data) {
},
fail:function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
我怎样才能检索到的Authorizetest class
发送到DoSomething
数据?
我认为你需要改一下你的问题上。这不是很清楚。 – Difster
@Difster,谢谢,我已经改变了一些问题,我希望它更清晰 – Jamo
您已经收到了正在发送的数据。为什么你需要检索你已经发送的内容?它在你的'data'变量中。 – Difster