gpt4 book ai didi

asp.net - 在 Visual Studio 中本地运行但在 IIS 上不运行时有效吗?

转载 作者:行者123 更新时间:2023-12-05 07:16:46 25 4
gpt4 key购买 nike

我使用 Visual Studio 2019 创建了一个新的 Blazor 服务器端应用程序。我选择了 Windows 身份验证。

以下组件 (\BlazorApp1\BlazorApp1\Shared\LoginDisplay.razor) 显示“Hello, Domain\Username!”在应用程序浏览器页面的右上角。

<AuthorizeView>
Hello, @context.User.Identity.Name!
</AuthorizeView>

然后我将它发布到同一 Windows 域(公司内联网)中的 Windows Server 2019 R2 上的 IIS。但是,浏览页面不显示消息?

客户端认证信息是如何传递给Blazer服务器的?

最佳答案

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.");
}
}
}

回答

How is the client authentication information passed to the Blazer server?

如果过程逻辑需要认证状态数据,比如执行用户触发的 Action 时,通过定义Task类型的级联参数获取认证状态数据:

@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://learn.microsoft.com/en-us/aspnet/core/security/blazor/?view=aspnetcore-3.0&tabs=visual-studio

关于asp.net - <AuthorizeView> 在 Visual Studio 中本地运行但在 IIS 上不运行时有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59097203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com