首页 > 解决方案 > mvc 项目中的 webapi - 如何从 ApiController 访问用户管理器?

问题描述

我有一个 MVC 项目,它还包含一个 webapi 控制器。在 MVC 控制器中,我可以访问为 MVC 应用程序初始化的 ApplicationUserManager 以执行诸如生成密码重置令牌之类的操作。

我现在需要从 webapi 控制器向用户发送一封带有密码重置令牌的电子邮件,但不知道如何从 mvc 应用程序访问已经初始化的用户管理器。

我添加了 Microsoft.AspNet.WebApi.Owin NuGet 包,它允许我获取 UserManager,如下所示:

    private ApplicationUserManager _userManager;
    public ApplicationUserManager UserManager
    {
        get
        {
            if (_userManager == null)
            {
                var owinCtx = Request.GetOwinContext();
                _userManager = owinCtx.GetUserManager<ApplicationUserManager>();
            }
            return _userManager;
        }
        private set => _userManager = value;
    }

但这显然不是使用 Startup.Auth.cs 中的 MVC 应用程序的设置进行初始化的。与该await UserManager.GeneratePasswordResetTokenAsync(user.Id)用户管理器无关。

如何使用 MVC 应用程序中初始化的 UserManager,或者在我的 webapi 中配置请求上下文以初始化与 MVC 应用程序中相同的内容?

标签: asp.netowinwebapiusermanager

解决方案


推荐阅读