使用桌面应用程序中的MVC Identity代码

问题描述 投票:11回答:2

我正在尝试使用桌面应用程序中的MVC Identity代码。桌面应用程序需要对我的用户数据进行一系列添加和更新。

我已经从生成的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

更新:

我可以直接访问数据库,所以我很满意不需要身份代码和类的解决方案。这里最大的障碍是创建和更新密码,以便可以通过我的网站应用程序中的身份代码“理解”它们。

c# asp.net-mvc asp.net-identity owin
2个回答
7
投票

有趣的方法,

否则,有必要清除httpcontext触及的所有内容..

你可以像这样创建ApplicationUserManager实例。

public ApplicationUserManager UserManager
{
    get
    { 
        if(_userManager == null)
        {
            _userManager =  new ApplicationUserManager(new Microsoft.AspNet.Identity.EntityFramework.UserStore<ApplicationUser>(yourDbContext));
        }
        return _userManager;
    }
}

0
投票

你可以这样做:

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");
© www.soinside.com 2019 - 2024. All rights reserved.