Как внедрить значение из заявки в объект передачи данных в ядре asp net? - PullRequest
0 голосов
/ 30 сентября 2018

Например: у меня есть dto в качестве параметра действия с атрибутом from body

public IActionResult Bar([FromBody]Foo dto)
{
  var claimsIdentity = User.Identity as ClaimsIdentity;
  var uid = Convert.ToInt32(claimsIdentity.Claims.FirstOrDefault(c => c.Type == "sub")?.Value);
  dto.uid = uid;
  _barService(dto);
  return Ok();           
}
public class Foo
{
  public int uid {get;set;} // from claim
  public string something{get;set;} // from front end request
}

В настоящее время у меня есть код записи для предоставления значения претензии dto вручную

В: В asp net core, как я могу автоматически ввести значение претензии в dto?

1 Ответ

0 голосов
/ 30 сентября 2018

Если вы не хотите дублировать код в своих контроллерах, вы можете поместить код в метод службы или вспомогательный метод или фильтр действий.

Например:

public class FillDtoClaimAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        var claimsIdentity = context.HttpContext.User.Identity as ClaimsIdentity;
        var uid = Convert.ToInt32(claimsIdentity.Claims.FirstOrDefault(c => c.Type == "sub")?.Value);
        ((Foo)context.ActionArguments["dto"]).uid = uid;
    }
}

и затем:

[FillDtoClaim]
public IActionResult Bar([FromBody]Foo dto)
{
    _barService(dto);
    return Ok();           
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...