ASP.NET 컨트롤러 외부에서 현재 사용자 가져오기
6263 단어 dotnet
[Route("[controller]")]
public class InternalController : ControllerBase
{
[HttpGet]
[Authorize]
public string GetCurrentUser()
{
return base.User.Identity.Name;
}
}
예를 들어 MediatR 처리기에서와 같이 컨트롤러 외부에서 액세스하려면 ASP.NET에서 이미 제공하는
IHttpContextAccessor
서비스를 주입하고 사용해야 합니다.[Route("[controller]")]
public class InternalController : ControllerBase
{
private readonly IMediator _mediator;
public InternalController(IMediator mediator)
{
_mediator = mediator;
}
[HttpGet]
[Authorize]
public async Task<string> GetCurrentUser()
{
var response = await _mediator.Send(new GetCurrentUser.Request());
return response.CurrentUserName;
}
}
public class GetCurrentUser
{
public class Request : IRequest<Response> { }
public class Response
{
public string CurrentUserName { get; set; }
}
public class Handler : IRequestHandler<Request, Response>
{
private readonly IHttpContextAccessor _httpContextAccessor;
public Handler(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public Task<Response> Handle(Request request, CancellationToken cancellationToken)
{
return Task.FromResult(new Response
{
CurrentUserName = _httpContextAccessor.HttpContext.User.Name
});
}
}
}
마지막으로 이 작업을 수행하려면
IHttpContextAccessor
클래스에 Startup
종속성을 등록해야 합니다.// ConfigureServices
services.AddHttpContextAccessor();
Reference
이 문제에 관하여(ASP.NET 컨트롤러 외부에서 현재 사용자 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bojanv91/tip-get-current-user-outside-an-asp-net-controller-53nd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)