我使用Visual Studio 2019创建了一个新的Blazor服务器端应用程序。我选择了Windows身份验证。
以下组件(\BlazorApp1\BlazorApp1\Shared\LoginDisplay.razor
)显示“您好,域\用户名!”在应用程序浏览器页面的右上方。
<AuthorizeView>
Hello, @context.User.Identity.Name!
</AuthorizeView>
然后将其发布到同一Windows域(公司Intranet网络)中Windows Server 2019 R2上的IIS。但是,浏览页面不会在?中显示消息?
客户端身份验证信息如何传递到Blazer服务器?
答案 0 :(得分:0)
Microsoft文档上有一个很好的示例,用于获取身份验证用户详细信息:
@page "/"
@using Microsoft.AspNetCore.Components.Authorization
@inject AuthenticationStateProvider AuthenticationStateProvider
<button @onclick="@LogUsername">Write user info to console</button>
@code {
private async Task LogUsername()
{
var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
var user = authState.User;
if (user.Identity.IsAuthenticated)
{
Console.WriteLine($"{user.Identity.Name} is authenticated.");
}
else
{
Console.WriteLine("The user is NOT authenticated.");
}
}
}
要回答
如何将客户端身份验证信息传递给Blazer 服务器?
如果过程逻辑需要身份验证状态数据(例如,执行用户触发的操作时),请通过定义任务类型的级联参数来获取身份验证状态数据:
@page "/"
<button @onclick="@LogUsername">Log username</button>
@code {
[CascadingParameter]
private Task<AuthenticationState> authenticationStateTask { get; set; }
private async Task LogUsername()
{
var authState = await authenticationStateTask;
var user = authState.User;
if (user.Identity.IsAuthenticated)
{
Console.WriteLine($"{user.Identity.Name} is authenticated.");
}
else
{
Console.WriteLine("The user is NOT authenticated.");
}
}
}
有关详细信息,请参见:
https://docs.microsoft.com/en-us/aspnet/core/security/blazor/?view=aspnetcore-3.0&tabs=visual-studio