c# - 在 System.Web 中为 Owin 使用 HttpContext 的替代方法

标签 c# asp.net asp.net-identity owin katana

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 .这正是您正在寻找的。

关于c# - 在 System.Web 中为 Owin 使用 HttpContext 的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24572794/

相关文章:

javascript - 在javascript函数中将数据设置为标签的文本

asp.net - 无法使用 asp.net core 身份登录

c# - 在 Javascript 中获取属性背后的代码?

c# - 有没有办法忽略 ASP.NET Core 中 HTTP 日志记录中的 swagger 响应?

asp.net-mvc - ApplicationDbContext - 它在项目中所属的位置

asp.net-mvc - 在 Asp.Net Core 1 (MVC6) 和 MVC 5 应用程序之间共享身份验证 cookie

c# - Thread.Abort 似乎没有抛出 ThreadAbortException 因为 AcceptSocket

c# - 使用 .NET 互操作编译 VB6 应用程序,仅当在我的机器上编译时运行

c# - 匹配字符串的正则表达式是什么,无论它在任意数量的不同索引处有 1 个或更少的撇号,还是根本没有?

c# - Entity Framework Core - 迁移到 .net core 后首先返回重复结果