我上的身份驗證方法使用的工作對我來說是令牌網絡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