在最小的api中获取当前用户



我正在尝试重构我的api到一个最小的api。以前我一直在使用ControllerBase。HttpContext来获取用户,像这样:

var emial = HttpContext.User.FindFirstValue(ClaimTypes.Email);

我想为端点映射使用的方法应该是这样的:

public static void MapSurveyEndpoints(this WebApplication app) {
app.MapPost("/api/Surveys", AddSurveysAsync);
}
public static async Task<Survey> AddSurveysAsync(ISurveyRepository repo, Survey survey) {
var email = ...; //get current user email
survey.UserEmail = email;
return await repo.AddSurveysAsync(survey);
}

在不使用控制器的情况下获得用户的另一种方法是什么?

最小api有几个用于处理程序的参数绑定源,包括特殊类型,如另一个答案中建议的HttpContext,但如果您只需要用户信息,您可以只添加ClaimsPrincipal(这是一种特殊类型)参数到您的处理程序:

app.MapGet("/...", (..., ClaimsPrincipal user) => user.Identity.Name);

可以将HttpContext作为端点的参数。ASP。. NET Core会提供给你。

public static async Task<Survey> AddSurveysAsync(
HttpContext context,
ISurveyRepository repo,
Survey survey)

相关内容

  • 没有找到相关文章

最新更新