ASP.NET Core Web API를 사용하고 있는데 여기에는 여러 개의 독립적 인 웹 API 프로젝트가 있습니다. 컨트롤러의 액션을 실행하기 전에 로그인 한 사용자가 이미 다른 사용자 (내가 DB에서 얻을 수있는)를 가장하고 있는지 확인하고 가장 된 사용자 ID를 작업에 전달할 수 있는지 확인해야합니다.ASP.NET 핵심 미들웨어 컨트롤러에 매개 변수 전달
- 나는 impesonated 사용자 가져 오기 요청 헤더
- 에서 초기 사용자 로그인을 얻을 수있는 경우 ID :이 이후
내가 그래서 미들웨어를 사용할 수있는 생각, 재사용 할거야 코드 조각입니다 어떤
- 가 호출되는 API에 사용할 수 있도록 요청 파이프 라인에서 해당 ID를 주입
public class GetImpersonatorMiddleware
{
private readonly RequestDelegate _next;
private IImpersonatorRepo _repo { get; set; }
public GetImpersonatorMiddleware(RequestDelegate next, IImpersonatorRepo imperRepo)
{
_next = next;
_repo = imperRepo;
}
public async Task Invoke(HttpContext context)
{
//get user id from identity Token
var userId = 1;
int impersonatedUserID = _repo.GetImpesonator(userId);
//how to pass the impersonatedUserID so it can be picked up from controllers
if (impersonatedUserID > 0)
context.Request.Headers.Add("impers_id", impersonatedUserID.ToString());
await _next.Invoke(context);
}
}
이 Question을 찾았지만 그게 내가 찾고있는 것을 해결하지 못했습니다.
매개 변수를 전달하고 요청 파이프 라인에서 매개 변수를 사용할 수있게하려면 어떻게해야합니까? 헤더에서 전달하는 것이 좋습니까? 아니면이를 수행하는보다 우아한 방법이 있습니까?
당신은 요청 컨텍스트를 변경해야하지 파이프 라인 자체. –
@LexLi, 예를 들어 자세히 설명해 주시겠습니까? 요청 자체에 정보를 추가하고 컨트롤러에서 가져 오는 것을 의미합니까? 그게 무슨 뜻인지, 나는 그것에 대해 생각하고 있었지만, 다시 말해서, 어디에서, 물결 무늬가 몸에 영향을 미치지 않을 것인가? – Coding