小编geo*_*ode的帖子

从 .NET 6 中的构建器设置中访问当前环境(开发、生产等)

我正在 .NET 6 中构建一个使用身份验证和基于策略的授权的应用程序。两者功能都很好。但是,我需要创建一种在开发环境中绕过授权的方法。下面是我在program.cs中的代码。

我创建了一个禁用授权的类,并将其添加到构建器中。builder.Services.AddSingleton<IAuthorizationHandler, DisableAuthorization>(); 这工作正常,我现在需要做的就是使其以环境“开发”为条件。我的问题是我不知道如何从构建器中获取当前环境(我确实知道构建后如何执行 - 例如,app.Environment.IsDevelopment())。

我已经在网上搜索过,但我能找到的所有解决方案都涉及注入 Startup() 和 ConfigureServices() 方法 - 这两个方法都已被 WebApplication.CreateBuilder取代取代。

在构建应用程序之前获取环境的最有效方法是什么?

当前代码(Program.cs

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();
builder.Services.AddServerSideBlazor();
builder.Services.AddHttpClient();
builder.Services.AddSingleton<IAppState, AppState>();
builder.Services.AddScoped<IAuthorizationHandler, IsAdminHandler>();
...


//Add authentication and register CAS as the authentication handler
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)

    // Add cookie authentication
    ...

builder.Services.AddAuthorization(options =>
    {
        // Add access policies
        options.AddPolicy("IsAdmin", Policies.IsAdminPolicy());
        options.AddPolicy("IsManager", Policies.IsManagerPolicy());
        options.AddPolicy("IsUser", Policies.IsUserPolicy());
        options.AddPolicy("IsReadOnly", Policies.IsReadOnlyPolicy());

        // …
Run Code Online (Sandbox Code Playgroud)

c# authorization environment-variables .net-core .net-6.0

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

是否有插入具有多个级联值的 .NET Blazor 组件的简写?

我正在开发 .NET Blazor 项目,需要将多个级联值传递给通用子表单。下面的代码应用了多个 [CascadingValue] 属性,对于传递一些值来说效果很好,但是当传递更多值时就变得有点麻烦了。是否有通过单个 [CascadingValue] 属性传递多个值的简写?如果没有,是否有更紧凑的方法来传递更多的值?(顺便说一句 - 我确实明白,除了给每个属性命名之外,还有其他选择)。

<CascadingValue Value="@Value1" Name = "Name1" > 
     <CascadingValue Value="@Value2" Name = "Name2" > 
            <CascadingValue Value="@Value3" Name = "Name3" > 
                <FooComponent />
             </CascadingValue>
     </CascadingValue>
</CascadingValue>

                                                               
Run Code Online (Sandbox Code Playgroud)

.net components cascading blazor

2
推荐指数
1
解决办法
520
查看次数