【发布时间】:2019-07-06 14:57:02
【问题描述】:
我正在尝试使用桌面应用程序中的 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?
更新:
我可以直接访问数据库,因此我对不需要身份代码和类的解决方案感到满意。这里最大的障碍是创建和更新密码,以便我的网站应用程序中的身份代码可以“理解”它们。
【问题讨论】:
-
根据您的更新判断,您正在寻找PasswordHasher 类。这将允许您比较密码并为用户散列新密码。但是,
UserManager类通常会为您提供很多功能,而无需深入了解HttpContext -
@trailmax:这看起来很有趣,但它似乎支持多个哈希版本。我会再看一些,但到目前为止还没有找到明确的文档说明哪些(哪些)可以与 MVC 身份代码一起使用。
-
你已经得到了一些答案,但这看起来与stackoverflow.com/questions/42556258/…基本相同的问题
-
@JonathanWood 您是否考虑过将所需功能公开为从桌面应用程序调用的 Web API?
-
@Nkosi:不,这是一个有趣的想法。但是我需要更新数百条记录并测试每条记录是否已经存在。所以这不是最有效的方法。工作完成后需要拉取 Web API。
标签: c# asp.net-mvc asp.net-identity owin