小编Pas*_* R.的帖子

将 Open ID Connect 与服务器端 Blazor 结合使用

我想在我的服务器端 Blazor 应用程序中使用 Open ID Connect 和 Identity Server 4 进行授权。我在 MVC 应用程序中使用了相同的设置。

使用最新的 .NET Core 版本 3.0 Preview 6,可以将属性“@attribute [Authorize]”添加到站点。但是如果我没有获得授权,我就不会被重定向到 Identity Server 来登录,因为我是在我的 MVC 应用程序中使用的。相反,该站点仅显示消息“未授权”。

在 Startup.cs 中,我有以下设置:

        services.AddAuthentication(options =>
        {
            options.DefaultScheme = "Cookies";
            options.DefaultChallengeScheme = "oidc";
        })
        .AddCookie("Cookies")
        .AddOpenIdConnect("oidc", options =>
        {
            options.Authority = "http://localhost:5000";
            options.RequireHttpsMetadata = false;

            options.ClientId = "myClient";
            options.SaveTokens = true;
        });
Run Code Online (Sandbox Code Playgroud)

        app.UseAuthentication();
Run Code Online (Sandbox Code Playgroud)

如果我没有登录,我如何告诉应用程序我想被重定向到身份服务器?

编辑:Codevisions 答案是一种解决方法。我在这里这里发现了悬而未决的 github 问题,计划在 .NET Core 3.0 Preview 7 中正式解决这个问题。

asp.net-core blazor

5
推荐指数
1
解决办法
2076
查看次数

如何在页面和共享文件夹中使用子文件夹

我有一个Blazor服务器端应用程序。它具有现成的Pages和Shared文件夹。由于这些文件夹中有很多组件,因此我想将这些组件分布到多个子文件夹中,以获得更清晰的结构。但是,如果执行此操作,则找不到组件,并且这些组件也不会显示在GUI中。我想念什么?我是否必须在某个地方注册到新子文件夹的路由?

.net-core blazor

4
推荐指数
1
解决办法
274
查看次数

如何在服务器端 Blazor 中通过 HttpContext 注销

HttpContext在 Blazor 服务器端视图中访问 以手动注销。我将此行添加到Startup.cs:services.AddHttpContextAccessor();并将其注入视图中@inject IHttpContextAccessor HttpContextAccessor。我有一个注销按钮,它尝试执行此代码:

await HttpContextAccessor.HttpContext.SignOutAsync("Cookies");
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误消息:

System.InvalidOperationException: 'Headers are read-only, response has already started.'
Run Code Online (Sandbox Code Playgroud)

我怎样才能防止这个错误?

asp.net-core blazor blazor-server-side

4
推荐指数
3
解决办法
6886
查看次数