我正在尝试使用桌面应用程序中的MVC身份代码。桌面应用程序需要对我的用户数据进行大量添加和更新。
我已经从生成的 MVC 应用程序中复制了类,安装了所需的包,并对代码进行了编译所需的所有更改。
我现在遇到的唯一问题是创建 ApplicationUserManager
类的实例。
public ApplicationUserManager UserManager
{
get => _userManager ?? HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
private set
{
_userManager = value;
}
}
private ApplicationUserManager _userManager;
问题是我没有HttpContext
,所以HttpContext.Current
总是返回 null。
我正在做的事情可能吗?如何在没有 HTTP 上下文的情况下从桌面应用程序构建UserManager
?
更新:
我可以直接访问数据库,因此我对不需要标识代码和类的解决方案感到满意。这里最大的障碍是创建和更新密码,以便可以通过我的网站应用程序中的身份代码"理解"它们。
有趣的方法,
否则,有必要清除httpcontext接触的所有内容。
您可以像这样创建应用程序用户管理器实例。
public ApplicationUserManager UserManager
{
get
{
if(_userManager == null)
{
_userManager = new ApplicationUserManager(new Microsoft.AspNet.Identity.EntityFramework.UserStore<ApplicationUser>(yourDbContext));
}
return _userManager;
}
}
你可以这样做:
var context = ApplicationDbContext.Create();
var userStore = new UserStore<ApplicationUser>(context);
var userManager = new UserManager<ApplicationUser>(userStore);
//change password
var result = userManager.ChangePasswordAsync("userId", "oldPwd", "newPwd");