如何在 ASP.net 中使用应用程序用户管理器

本文关键字:应用程序 用户 管理器 ASP net | 更新日期: 2023-09-27 18:34:51

我在应用程序中创建了一个名为ProfileContoller的控制器。在这个控制器中,我需要创建一个ApplicationUserManager实例,但我不知道如何创建一个新的实例。我尝试了下面的代码:

private ApplicationUserManager _userManager = Current.GetOwinContext().GetUserManager<ApplicationUserManager>();

但是我收到此错误:

当前

上下文中不存在名称Current

的第一个问题是我该怎么做?我将访问以下代码行:

return View(await _userManager.FindByNameAsync(username));

我也使用UnityContainer.我关于这个问题的第二个问题是:我是否也可以注册与接口IUserIUserStore 1 关联的ApplicationUserManager


更新:

后来我发现有这样的东西:

private UserManager<ApplicationUser> _userManager = UserManager<ApplicationUserManager>();

位它给我这个错误:

不可调用的成员UserManager<TUser>不能像方法一样使用。

有了这个额外的"用户管理器",我看不到树木的木头。所以你能再一次解释一下所有"用户管理器"的含义以及它们的用途吗?


笔记:
1 我不知道这两者之间的区别,所以如果你愿意,你能解释一下吗?

如何在 ASP.net 中使用应用程序用户管理器

这对

我有用:

using System.Web;  //make sure you have this using
    private ApplicationUserManager _userManager;
    public ApplicationUserManager UserManager
    {
        get
        {
            if (_userManager == null && HttpContext == null)
            {
                return new ApplicationUserManager(new Microsoft.AspNet.Identity.EntityFramework.UserStore<ApplicationUser>(db));
            }
            return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
        }
        private set
        {
            _userManager = value;
        }
    }
我没有

在VS中看过这个,所以我不是100%,但是您收到的错误消息

当前上下文中不存在名称"当前">

可能只是因为当前是HTTP上下文的一部分

尝试

public class ProfileController : Controller
{
    private ApplicationUserManager _userManager;
    public ProfileController()
    {
        _userManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
    }

因此,此处的更改是_userManager正在声明但未设置。然后,我们在类的构造函数中设置它。