在.Net Core中创建PerOwinContext

问题描述 投票:0回答:1

如何在.net Core中创建这样的owin上下文,以便可以使用用户和角色管理器?

 public void ConfigureAuth(IAppBuilder app)
    {
        // Configure the db context, user manager and signin manager to use a single instance per request
        //app.CreatePerOwinContext(ApplicationDbContext.Create);

        app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
        app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
        app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);


   }

并在Controller中使用,如

  private ApplicationSignInManager _signInManager;
    private ApplicationUserManager _userManager;
    private ApplicationRoleManager _roleManager;

    public UsersAdminController()
    {
    }

    public UsersAdminController(ApplicationUserManager userManager, ApplicationSignInManager signInManager, ApplicationRoleManager roleManager)
    {
        UserManager = userManager;
        SignInManager = signInManager;
        RoleManager = roleManager;
    }


  public ApplicationSignInManager SignInManager
    {
        get
        {
            return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>();
        }
        private set
        {
            _signInManager = value;
        }
    }

    public ApplicationUserManager UserManager
    {
        get

        {
     //GetOwinContext is not available in .Net Core
            return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
        }
        private set
        {
            _userManager = value;
        }
    }

     public ApplicationRoleManager RoleManager
    {
        get
        {
            return _roleManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationRoleManager>();
        }
        private set
        {
            _roleManager = value;
        }
    }

我尝试过this,但没有得到想要的结果。

c# asp.net-core owin
1个回答
0
投票

这是ASP.NET MVC 5的代码,不是核心。尽管两个名称中都有“ ASP.NET”,但它们都是完全不同的框架

在Core中,诸如UserManager<TUser>之类的服务是请求范围的,其功能与“每个OWIN上下文”相同。但是,身份在ASP.NET Core中有所不同,因此ApplicationSignInManager之类的内容不再适用。您需要参考文档并实现auth,因为它应该在ASP.NET Core中完成。

© www.soinside.com 2019 - 2024. All rights reserved.