WebApi认证刷选器获取Post参数

使用webapi再所难免会遇到认证需求,毕竟没有认证的服务安全隐患太大。

我们在webapi中进行认证基本上都是新增一个刷选器,继承AuthorizeAttribute。继承后需要重写HandleUnauthorizedRequest方法实现拦截上下文,拦截后可对本次请求进行验证。

如果你的webapi认证秘钥是通过参数进行则需要将参数取出来进行比较,比较通过则认证通过,否则返回401。

我在写的时候发现get方式很简单,因为参数是直接在url后,截取下就ok了,但是post方式则取不到参数,在网上找了好久发现可以通过以下代码截取post的参数:

protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
    base.HandleUnauthorizedRequest(actionContext);
    HttpContent content = actionContext.Request.Content;
    //执行该句,会将action的参数实体置为空
    Task<JObject> task = content.ReadAsAsync<JObject>();
    var result = task.Result;
    if (!data.CheckSign(model.access_secret, task.Result))
    {
        return false;
    }

}

 

posted @ 2020-01-10 12:23  microsoftzhcn  阅读(517)  评论(0编辑  收藏  举报