.net Web api AuthorizeAttribute将参数传递给控制器

时间:2018-12-14 08:43:38

标签: asp.net-web-api custom-attributes

实现了名为JwtAuthenticateAttribute的AuthorizedAttribute并执行了一些操作

可以为以下API的每个请求触发

[HttpGet]
[JwtAuthenticate]
public GetFaqListDS Index([FromUri] GetFaqListModel model)
{
    List<MP_faqs> res = Faq.GetFaqList(model.curPage, model.pageSize);
    var re = Request;
    var hds = re.Headers;
    GetFaqListDS ds = new GetFaqListDS();
    ds.data = res;
    return ds;
}

问题是,如何通过属性JwtAuthenticate将值传递给此控制器的功能。

P.S,该值存在于此属性的OnAuthorization中。

谢谢。

1 个答案:

答案 0 :(得分:1)

在Onauthorize方法的“ actionContext.Request.Properties”中添加所需的值,并在控制器中访问它们。

添加UserDetail模型:

actionContext.Request.Properties.Add("__user", new UserDetails(){userid=123, username="ABC"});

获取值:

private static UserDetails GetUserDetailsFromRequest()
    {
        object tempVal;
        try
        {
            var httpRequestMessage = (HttpRequestMessage)HttpContext.Current.Items["MS_HttpRequestMessage"];
            httpRequestMessage.Properties.TryGetValue("__user", out tempVal);
            if (tempVal == null) return null;
            var user = (UserDetails)tempVal;
            return user;
        }
        catch
        {
        }
        return new UserDetails();
    }

希望这会对您有所帮助。