私は私のウェブアピ.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メソッドを介して送信された値を取得することはできません。
私は
$.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
に送信されたデータを取得することができ、データを送信するためのjQueryを使用していますか?
でそれにアクセスします。それはあまり明確ではありません。 – Difster
@Difster、ありがとう、私は少し質問を変更しました。私はそれがより明確であることを願っています – Jamo
あなたはすでに送信されているデータを持っています。なぜあなたはすでに送信したものを取得する必要がありますか?あなたの 'data'変数にあります。 – Difster