Создать PerOwinContext в .Net Core - PullRequest
0 голосов
/ 28 октября 2019

Как я могу создать такой контекст в .net Core, чтобы я мог использовать Диспетчер пользователей и ролей?

 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);


   }

и использовать в контроллере как

  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;
        }
    }

У меня естьпробовал это , но не получил желаемых результатов.

1 Ответ

0 голосов
/ 28 октября 2019

Это код для ASP.NET MVC 5, , а не Core. Несмотря на наличие «ASP.NET» в обоих именах, это совершенно разные фреймворки .

. В Core такие службы, как UserManager<TUser>, имеют объем запросов, что функционально аналогичноСОБСТВЕННЫЙ контекст ". Однако идентификация отличается в ASP.NET Core, поэтому такие вещи, как ApplicationSignInManager, больше не применяются. Вам нужно обратиться к документации и реализовать аутентификацию, как это должно быть сделано в ASP.NET Core.

...