ASP.NET 身份验证现在基于 OWIN 中间件,可以在任何基于 OWIN 的主机上使用。 ASP.NET Identity 对 System.Web 没有任何依赖性。
我有一个 AuthorizeAttribute 过滤器,我需要在其中获取当前用户并添加一些属性以便稍后由操作 Controller 检索。
问题是我必须使用属于 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 项目的解决方案,这对我无效。
最佳答案
您可以使用 OwinRequestScopeContext .这正是您正在寻找的。p>
关于c# - 在 System.Web 中为 Owin 使用 HttpContext 的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24572794/