所以我刚刚开始了解blazor,我正试图使一个约会应用程序,在该应用程序中,我有一个页面,创建配置文件,但问题是,我不能让它读取登录的用户ID由它自己
这是我的代码
@code {
private string FullName { get; set; } = string.Empty;
private DateTime Birthday { get; set; }
private string Gender { get; set; } = "Male";
private string City { get; set; } = string.Empty;
private string PostalCode { get; set; } = string.Empty;
private int Height { get; set; }
private bool? ProfileCreated { get; set; }
private string? ErrorMessage { get; set; }
private string? isLoggedIn { get; set; }
private int userId { get; set; }
private async Task CreateProfileAsync()
{
try
{
int loggedInUserId = await GetCurrentLoggedInUserIdAsync(userId);
bool success = await DatingAppService.CreateProfile(loggedInUserId, FullName, Birthday, Gender, City, PostalCode, Height);
if (success)
{
ProfileCreated = true;
ErrorMessage = string.Empty;
Navigation.NavigateTo("/like-profile", forceLoad: true);
}
else
{
ProfileCreated = false;
ErrorMessage = "Profile creation failed.";
}
}
catch (Exception ex)
{
ProfileCreated = false;
ErrorMessage = "An error occurred: " + ex.Message;
}
}
private async Task<int> GetCurrentLoggedInUserIdAsync(int userId)
{
return userId;
}
private string ProfileStatusColor => ProfileCreated.Value ? "profile-success" : "profile-error";
private string ProfileStatusMessage => ProfileCreated.Value ? "Profile created successfully!" : ErrorMessage;
}
我尝试使用AuthenticationStateProvider,但它似乎不工作,因为我使用Blazor服务器应用程序。
请您客气点我是新手。
1条答案
按热度按时间xdyibdwo1#
这个问题没有简短的答案。为了识别用户,您需要实现身份验证方案,然后与Blazor的AuthenticationStateProvider集成。
从阅读本系列文章开始:
https://chrissainty.com/series/securing-your-blazor-apps/
此外,官方文件在评论中指出:
https://learn.microsoft.com/en-us/aspnet/core/blazor/security
实际上,这里有几个主题可以彼此分开:
1.学习Blazor。
1.学习ASP.NET核心认证和授权。
1.学习如何将Blazor与AuthenticationStateProvider集成。
1.了解您可用的各种身份验证方案选项,例如Cookie、承载令牌、JWT等。
1.了解各种身份提供者,无论是本地(EF核心身份,相邻的Web API或数据库)还是外部(Azure,Auth 0,社交媒体平台等)。
作为一个初学者,你可能应该坚持使用一些应用内/本地身份验证提供程序,只是为了开始和熟悉一些基本的身份验证概念。应用内意味着,您可以使用本地数据库,可能是EF Core Identity数据库,而不是尝试与外部提供商集成。
最终,您用于学习/爱好项目目的的东西可能不会在真实的世界中飞行,当涉及到安全性和性能时,这取决于您的需求。
请注意,如果您发现自己编写了自己的哈希/加密算法来存储用户的敏感数据或密码,那么您就做错了。这可能不是你的项目的主要目的,你不应该试图发明已经存在的东西。
也许为了更直接地帮助您入门,请参阅此存储库--https://github.com/CodeFontana/BlazorSimpleAuthDemo
这是我能想到的最基本的用户身份验证演示,基于.NET 7.0的vanilla Blazor Server模板。
为了在Stack Overflow上回答的完整性,我将在这里发布代码的相关部分。
Program.cs
App.razor:
Index.razor
Login.razor:
AuthenticationService.cs:
SimpleAuthStateProvider.cs:
此外,如果您想查看Blazor Dating应用程序的示例实现,用于演示/教育/非现实世界的目的,您可以查看此存储库:https://github.com/CodeFontana/DatingApp
然而,这使用Blazor WebAssembly作为前端/客户端,并由Web API支持,该API使用EF Core管理所有数据,包括应用内用户身份管理。
无论如何,希望这能帮助你找到正确的方向。