Аутентификация ASP.NET теперь основана на промежуточном программном обеспечении OWIN, которое может использоваться на любом хосте на базе OWIN. Идентификатор ASP.NET не имеет никакой зависимости от System.Web.
У меня есть фильтр AuthorizeAttribute, где мне нужно получить текущего пользователя и добавить некоторые свойства, которые будут получены позже контроллерами действий.
Проблема в том, что я должен использовать HttpContext, который принадлежит System.Web. Есть ли альтернатива HttpContext для Owin?
public class WebApiAuthorizeAttribute : AuthorizeAttribute
{
public override async Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
{
base.OnAuthorization(actionContext);
Guid userId = new Guid(HttpContext.Current.User.Identity.GetUserId());
ApplicationUserManager manager = new ApplicationUserManager(new ApplicationUserStore(new ApplicationDbContext())) { PasswordHasher = new CustomPasswordHasher() };
ApplicationUser user = await manager.FindByIdAsync(userId);
actionContext.Request.Properties.Add("userId", user.LegacyUserId);
}
}
Примечание: я нашел этот вопрос, который кажется дублированным, но просит решение, работающее над проектом NancyFx, для которого оно не подходит для меня.