gpt4 book ai didi

c# - ASP.NET Core 在开发环境中禁用身份验证

转载 作者:行者123 更新时间:2023-12-02 05:16:06 24 4
gpt4 key购买 nike

是否可以在 ASP.NET Core 应用程序中“禁用”身份验证而不更改其逻辑?

我有一个 .net 网站,它使用外部身份服务器应用程序进行身份验证。无论如何,我希望能够在开发时模拟身份验证(ASPNETCORE_ENVIRONMENT = Development),公开对所有操作的访问权限,忽略授权属性。

是否可以仅模拟服务集合中的某些服务?

最佳答案

更新到 net core 3.1 后,mvc AllowAnonymousFilter 不再为我们工作。我们发现有条件地添加自定义 IAuthorizationHander 是有条件绕过身份验证的最简单方法。

例如。

/// <summary>
/// This authorisation handler will bypass all requirements
/// </summary>
public class AllowAnonymous : IAuthorizationHandler
{
public Task HandleAsync(AuthorizationHandlerContext context)
{
foreach (IAuthorizationRequirement requirement in context.PendingRequirements.ToList())
context.Succeed(requirement); //Simply pass all requirements

return Task.CompletedTask;
}
}

然后在 Startup.ConfigureServices 中有条件地注册此处理程序。

private readonly IWebHostEnvironment _env;
public Startup(IWebHostEnvironment env)
{
_env = env;
}

public void ConfigureServices(IServiceCollection services)
{
{...}

//Allows auth to be bypassed
if (_env.IsDevelopment())
services.AddSingleton<IAuthorizationHandler, AllowAnonymous>();
}

注意 AddAuthenticationAddAuthorization 服务仍然按照产品代码注册和配置(这很好)。

为了允许我们的单元测试绕过身份验证,我们添加了一个新的匿名测试库,其中包含一个启动类,该启动类无条件地添加了这一行。又好又简单!

关于c# - ASP.NET Core 在开发环境中禁用身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41112564/

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