【发布时间】:2014-07-04 10:58:35
【问题描述】:
ASP.NET 身份验证现在基于可在任何基于 OWIN 的主机上使用的 OWIN 中间件。 ASP.NET Identity对 System.Web 没有任何依赖。
我有一个 AuthorizeAttribute 过滤器,我需要在其中获取当前用户并添加一些属性以供操作控制器稍后检索。
问题是我必须使用属于 System.Web 的 HttpContext。 Owin 有没有 HttpContext 的替代品?
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);
}
}
注意:我找到了this question,这似乎是重复的,但要求提供适用于 NancyFx 项目的解决方案,这对我无效。
【问题讨论】:
标签: c# asp.net asp.net-identity owin katana