如何在 Blazor WASM 中对当前经过身份验证的用户帐户信息执行 CRUD 操作?

Posted

技术标签:

【中文标题】如何在 Blazor WASM 中对当前经过身份验证的用户帐户信息执行 CRUD 操作?【英文标题】:How do I perform CRUD operations on the current authenticated users account information, in Blazor WASM? 【发布时间】:2021-09-08 22:35:35 【问题描述】:

在 Blazor WASM 中,我可以让当前用户登录,我可以通过以下方式获取他们的电子邮件地址等:

[Inject] AuthenticationStateProvider authStateProvider  get; set; 

var user = authStateProvider.GetAuthenticationStateAsync().Result.User;

但我不知道如何使用当前经过身份验证的用户来创建一个安全页面,他们可以在其中编辑他们的名字、姓氏、电话号码等信息。

基本上,我需要一种方法来更新生成的 AspNetUsers 表以及当前用户的任何信息。它也需要是安全的,所以不能仅仅通过使用电子邮件地址来获取信息。

类似于模板服务器端页面的允许方式,但我希望用户通过 Blazor 组件/页面来完成,然后我将使用 API 端点来获取和更新信息。

更多信息:Blazor WASM 项目,配置为 HTTPS,托管 ASP.NET Core,PWA,个人帐户身份验证类型。

以下是我想做的示例,但在 Blazor 应用模板的服务器端:

【问题讨论】:

您需要在服务器端创建一个端点来更新这些信息。在客户端中,您无法访问此类安全的东西,就像您使用普通的旧 javascript 创建客户端一样。 @Simon 也许我应该编辑我的问题更清楚。我知道我需要创建端点来执行操作。没事儿。例如,在我的应用程序中,我有日记条目。我显示了它们的列表,当用户单击一个时,我可以将 JournalEntry 的 Id 传递给 HttpGet 方法并使用该 Id 返回信息......我传递给端点以获取的 JournalEntry Id 的等价物是什么用户信息?抱歉,我在这里一无所知,但希望我能学到。 【参考方案1】:

如果我正确理解了您的问题,那么您并没有真正将用户的 id 自己传递给后端控制器。相反,您只需在要更新用户数据的后端控制器方法上添加一个[Authorize]。当您发出任何经过身份验证的请求时,您需要将授权标头(或 cookie 取决于您使用的身份验证方法)传递到后端。请参阅this page 了解有关如何准确执行此操作的更多信息。

【讨论】:

以上是关于如何在 Blazor WASM 中对当前经过身份验证的用户帐户信息执行 CRUD 操作?的主要内容,如果未能解决你的问题,请参考以下文章

Blazor wasm 获取更多信息并添加到用户声明中

如何使用 Azure AD B2C 保护 Blazor Wasm 应用访问的 Azure 函数?

Blazor Wasm 身份登录/注销事件

如何更改 Blazor WASM 身份网络核心 3.1 消息“您已注销”、“检查登录状态”和“授权”?

Blazor Wasm 身份验证

使用通过 Blazor WASM 使用 Windows 身份验证的 WebAPI