【问题标题】:Identity Sever 4 - Users to change their Username/EmailIdentity Server 4 - 用户更改其用户名/电子邮件
【发布时间】:2020-06-21 13:37:34
【问题描述】:

我需要让用户在登录后能够更改其帐户上的用户名/电子邮件地址(相同的值)......也许与更改密码的方式类似。我查看了 IdentityServer4 文档,但没有提到这一点……系统正在使用 ASP.net Identity 来存储用户数据。

  1. IdentityServer4 是否有“开箱即用”选项来更改用户名? (因为它不在我认为不在的文档中)

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

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

【问题讨论】:

  • 来自documentation提供了一个基于 ASP.NET 身份的实现,用于管理 IdentityServer 用户的身份数据库。此实现在 IdentityServer 中实现了为您的用户加载身份数据以向令牌发出声明所需的扩展点。 这就是 IdentityServer4 所能做到的。对于 Asp.Net Identity,您可以查看 Microsoft documentation

标签: identityserver4 asp.net-identity-2


【解决方案1】:

如果您在 IS4 中使用 Asp.Net Identity,则更新用户名/电子邮件将通过 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 本身保护)上创建了一个单独的“用户管理”API 端点。如果您对类似选项感兴趣,请查看 IS4 上有关创建自己的端点的文档:http://docs.identityserver.io/en/latest/topics/add_apis.html

【讨论】:

    猜你喜欢
    • 2014-05-24
    • 2014-05-28
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2016-11-03
    • 2015-07-20
    相关资源
    最近更新 更多