puș*_*een 6 c# asp.net-identity minimal-apis
我正在尝试将我的 api 重构为最小的 api。以前我一直使用 ControllerBase.HttpContext 来获取用户,如下所示:
var emial = HttpContext.User.FindFirstValue(ClaimTypes.Email);
Run Code Online (Sandbox Code Playgroud)
我想要用于端点映射的方法应该是这样的:
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);
}
Run Code Online (Sandbox Code Playgroud)
在不使用控制器的情况下吸引用户的另一种方法是什么?
Gur*_*ron 13
最小 API 有多个用于处理程序的参数绑定源,包括特殊类型,就像HttpContext另一个答案中所建议的那样,但如果您只需要用户信息,您可以仅将ClaimsPrincipal(这是特殊类型之一)参数添加到您的处理程序中:
app.MapGet("/...", (..., ClaimsPrincipal user) => user.Identity.Name);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4159 次 |
| 最近记录: |