Identity Server 4 - 用户更改他们的 Username/Email

Identity Sever 4 - Users to change their Username/Email

我需要让用户在登录后能够更改其帐户上的 username/email 地址(相同值)...可能与更改密码的方式类似。我查看了 IdentityServer4 文档,但没有看到任何提及...系统正在使用 ASP.net Identity 来存储用户数据。

  1. IdentityServer4 是否有 'out of the box' 选项来更改用户名? (因为它不在我假设的文档中)

  2. 任何人都可以推荐任何已经完成的示例吗?搜索时,令人惊讶的是,这方面的信息很少。

  3. 如果没有例子,谁能建议从哪里开始?

如果您在 IS4 中使用 Asp.Net Identity,则更新 username/email 将通过 Asp.Net Identity 方法完成。特别是,这是通过 UserManager 使用两种方法完成的,SetUserNameAsync() 和 SetEmailAsync()。假设您已经有一个 UserManager 实例(使用 DI 很常见),代码将类似于:

// First get the user, in this example, by ID but also you can use FindByEmailAsync()
var identityUser = await _userManager.FindByIdAsync(id.ToString());

// Change the Username field
var usernameResult = await _userManager.SetUserNameAsync(identityUser, user.Email);

// Change the email field
var emailResult = await _userManager.SetEmailAsync(identityUser, user.Email);

然后您可以检查 usernameResult.Succeeded 和 emailResult.Succeeded 布尔值以获得运算结果。

您可以根据需要实施此操作。就我而言,我在运行此代码的 IdentityServer4 实例(也受 IS4 本身保护)上创建了一个单独的 "User Management" API 端点。如果您对类似的选项感兴趣,请查看 IS4 上关于创建您自己的端点的文档:http://docs.identityserver.io/en/latest/topics/add_apis.html