【发布时间】:2020-07-20 00:07:25
【问题描述】:
我正在开发两个不同的应用程序,我将它们命名为 A 和 B。
- A 是一个互联网平台,只有拥有有效用户帐户才能登录。
- B 是一个 Intranet 平台,用户可以在其中通过 Active Directory 进行身份验证。使用应用程序 B 的管理员应该能够为应用程序 A 创建新的用户帐户。
创建新用户帐户后,我希望能够实现不同的功能,例如向注册的邮件地址发送电子邮件,以便新用户可以更改默认密码。
我想要实现的所有功能都可以由 UserManager 完成(请参阅以下链接中的“使用其他应用程序添加用户”部分:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/scaffold-identity?view=aspnetcore-3.1&tabs=visual-studio#disable-register-page)。
基于此我实现了以下代码:
public class ControllerClass : Controller
{
private readonly HelperClass _helper;
private readonly UserManager<IdentityUser> _userManager;
public ControllerClass (UserManager<IdentityUser> userManager)
{
_userManager = userManager;
_helper= new HelperClass (userManager);
}
}
public class HelperClass
{
private readonly DbContext _db;
private readonly UserManager<IdentityUser> _userManager;
public HelperClass (UserManager<IdentityUser> userManager)
{
_db = new DbContext ();
_userManager = userManager;
}
private async Task<string> EnsureUser(string userName, string userPassword)
{
var user = await _userManager.FindByNameAsync(userName);
if (user == null)
{
user = new IdentityUser()
{
UserName = userName
};
await _userManager.CreateAsync(user, userPassword);
}
return user.Id;
}
internal async void CreateUser(UserVM uvm, int id)
{
var userId = await EnsureUser(uvm.userName, uvm.userPassword);
// TODO ...
}
}
很遗憾,我没有设法将 UserManager 包含到我的应用程序 B 中。我收到以下错误消息:“处理请求时发生未处理的异常。 InvalidOperationException:尝试激活“ControllerClass”时,无法解析“Microsoft.AspNetCore.Identity.UserManager`1[IdentityUser]”类型的服务。”
您知道如何添加 UserManager 来管理另一个应用程序的用户吗?
【问题讨论】:
标签: entity-framework asp.net-core-3.1 usermanager