【发布时间】:2021-11-26 07:30:14
【问题描述】:
我正在创建一个待办事项,其中创建时的每个项目都属于特定用户。我将 AspNetCore 身份与表 AspNetUsers 一起使用。我试图在 OnInitializedAsync 方法中获取当前用户的 ID。我遇到了一个小问题。我在另一篇文章中发现 FirstOrDefault().Value 将返回用户 ID,但是,由于我的用户模型使用 GUID 作为用户 ID 而 AspNetCore.Identity 没有,我遇到了如何更改 AspNetCore 的问题。将用户 ID 标识为 GUID。其他表依赖于为 UserID 设置的 GUID 类型(迁移会出现此错误),因此我无法更改它。但是,这也可能不是正确的方法。我想知道如何正确检索 UserID?
@inject AuthenticationStateProvider GetAuthenticationStateAsync
private Todo todoItem { get; set; } = new Todo ();
protected override async Task OnInitializedAsync()
{
todoItem.owningUser = new User();
var authstate = await GetAuthenticationStateAsync.GetAuthenticationStateAsync();
var user = authstate.User;
var id = user.Claims.FirstOrDefault().Value;
todoItem.owningUser.UserId = Guid.Parse(id); // did not work
}
【问题讨论】:
-
你有可能设计你的桌子吗?
-
AspNetUsers 是生成的表,但 Blazor 模板
-
它给你什么样的输出,你期待什么样的输出?如果您将所有内容都设置为 GUID 类型,那么您不应该真正遇到问题。
-
我认为 AspNetUsers 表使用的是字符串而不是 GUID。我不确定如何将 AspNetUsers 表更改为也使用 GUID
-
在这种情况下,如前所述,如果您有权访问您的 SQL 表,只需更改您表中的数据类型。应用迁移时,您可能不小心做错了什么。
标签: c# asp.net-core blazor blazor-webassembly