相关疑难解决方法(0)

Windows 身份验证适用于 IIS,但不适用于 Kestrel / Microsoft.AspNetCore.Authentication.Negotiate(不在 Chrome 中,有时在 Edge 中,始终在 IE 中)?

我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!” 来自...\BlazorApp1\BlazorApp1\Shared\LoginDisplay.razor右上方的以下剃须刀组件 ( )。

<AuthorizeView>
    Hello, @context.User.Identity.Name!
</AuthorizeView>
Run Code Online (Sandbox Code Playgroud)

如果使用 Kestrel 运行,则不会显示该消息。所以我尝试了以下步骤使其在 Kestrel 中工作。

  1. 导入 NuGet 包 Microsoft.AspNetCore.Authentication.Negotiate

  2. 添加以下代码ConfigureService()Startup.cs

    services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
Run Code Online (Sandbox Code Playgroud)
  1. 添加以下代码Configure()Startup.cs。它们被添加到app.UseRouting();和之间app.UseEndpoints(...
            app.UseAuthentication();
            app.UseAuthorization();
Run Code Online (Sandbox Code Playgroud)

它仍然不显示 Hello 消息。我读到“允许匿名请求。使用 ASP.NET Core 授权来挑战匿名身份验证请求。” 文档中,所以我做了以下操作来禁用匿名请求。

在 中_Host.cshtml,在 之后添加了以下几行@namespace BlazorApp1.Pages

@using Microsoft.AspNetCore.Authorization
@attribute [Authorize]
Run Code Online (Sandbox Code Playgroud)

但是,消息还是不显示?这是否意味着授权不起作用?


更新:

我将文件更新...\BlazorApp1\BlazorApp1\Shared\LoginDisplay.razor

<AuthorizeView>
    <Authorized>
        Hello, @context.User.Identity.Name!
    </Authorized>
    <NotAuthorized>
        You …
Run Code Online (Sandbox Code Playgroud)

asp.net iis kestrel-http-server asp.net-core blazor

8
推荐指数
2
解决办法
4874
查看次数

标签 统计

asp.net ×1

asp.net-core ×1

blazor ×1

iis ×1

kestrel-http-server ×1