我已经使用Microsoft Identity Platform创建了一个Blazor服务器应用程序,并使用本教程:使用Azure AD 进行Blazor Server应用程序身份验证
我的应用程序应该是公司的一个小工具,纯粹在内部使用。用户将能够创建和管理事件。由于它实际上只被少数人使用,我计划将用户的姓名或电子邮件地址存储在数据库中,以根据数据库的用户id显示登录者的正确事件。不必再与Azure AD打交道。
为了实现这一点,每次有人登录时,我都必须查询该电子邮件地址是否已经在数据库中,如果没有,则创建一个新条目。
我的问题是,哪里是进行此查询的最佳位置。
我的第一个想法是在LogiDiskplay.razor 中做这件事
<AuthorizeView>
<Authorized>
<a href="MicrosoftIdentity/Account/SignOut">Log out</a>
Hello, @context.User.Identity?.Name!
</Authorized>
<NotAuthorized>
<a href="MicrosoftIdentity/Account/SignIn">Log in</a>
</NotAuthorized>
</AuthorizeView>
在这里,我只需要添加一个在有人登录时执行的方法。context.User.Identity?.Name
给了我需要的电子邮件地址。但是,如果我把它放在OnInitializedAsync((中,每次加载页面时,都会进行检查。
有了这个页面上的代码:ASP.NET Core Blazor身份验证和授权,我可以在其他地方获得电子邮件地址。
哪里是查询用户的最佳位置?
我认为你可以在_Host.cshtml.cs
:中完成
using Microsoft.AspNetCore.Mvc.RazorPages;
public void Onget(){
var email= Request.HttpContext.User.Identity.Name;
//Your query to the database
}