C# 在Identity Server 4中,如何添加实际用户,而不是测试用户

C# 在Identity Server 4中,如何添加实际用户,而不是测试用户,c#,.net,.net-core,identityserver4,C#,.net,.net Core,Identityserver4,我正在学习Identity Server 4,所有给出的示例都显示了如何通过中间件配置“AddTestUsers()”添加测试(演示示例)用户,这让我很沮丧 如何实际添加自己的用户?? 我想在这里问这个问题,这样将来其他新手就可以了解这个问题。添加用户(用户名+密码)是使用Identity Server的主要原因之一 显然,如果你想使用真实的信息,你需要连接到你的数据库 连接数据库 当局提供了非常详细的连接方案。这里是连接解决方案 自定义用户 通常,我们更喜欢自定义用户属性。您需要创建一个从Id

我正在学习Identity Server 4,所有给出的示例都显示了如何通过中间件配置“AddTestUsers()”添加测试(演示示例)用户,这让我很沮丧

如何实际添加自己的用户??


我想在这里问这个问题,这样将来其他新手就可以了解这个问题。添加用户(用户名+密码)是使用Identity Server的主要原因之一

显然,如果你想使用真实的信息,你需要连接到你的数据库

连接数据库 当局提供了非常详细的连接方案。这里是连接解决方案

自定义用户 通常,我们更喜欢自定义用户属性。您需要创建一个从
IdentityUser
继承的自定义用户

公共类应用程序用户:IdentityUser
{
//你想要的每一个属性
// ...
}
对于用户,需要自定义DB上下文:

public类ApplicationDbContext:IdentityDbContext

修改登录页面的内容 在
Quickstart/Account/AccountController.cs
中,您可以看到
TestUser
被注入到构造函数中。删除它并注入以下内容:

UserManager用户管理器,
SignInManager SignInManager
查找
Login
post操作,修改登录验证逻辑

公共异步任务登录(LoginInputModel模型,字符串按钮)
{
//其他代码
// ...
//这个登录逻辑
if(ModelState.IsValid)
{
var user=await\u userManager.FindByNameAsync(model.Username);
如果(用户!=null)
{
var result=await _signInManager.PasswordSignInAsync(user.UserName,model.Password,model.RememberLogin,true);
if(result.successed)
{
//在这里,您可以在成功登录后执行一些操作
// ...
wait_events.RaiseAsync(新的userloginsAccessEvent(user.UserName,user.Id.ToString(),user.UserName));
}
if(_interaction.IsValidReturnUrl(model.ReturnUrl)| | Url.IsLocalUrl(model.ReturnUrl))
{
返回重定向(model.ReturnUrl);
}
返回重定向(“~/”);
}
}
//其他代码
}
var builder = services.AddIdentityServer(options =>
            {
                options.Events.RaiseErrorEvents = true;
                options.Events.RaiseInformationEvents = true;
                options.Events.RaiseFailureEvents = true;
                options.Events.RaiseSuccessEvents = true;

                // see https://identityserver4.readthedocs.io/en/latest/topics/resources.html
                options.EmitStaticAudienceClaim = true;
            })
                .AddTestUsers(TestUsers.Users)