.net core 如何创建在.NETCore中不起任何作用的身份验证方案?

.net core 如何创建在.NETCore中不起任何作用的身份验证方案?,.net-core,asp.net-authentication,.net Core,Asp.net Authentication,在开发、登台和生产中,我的控制器使用[Authorize]属性来确保只有经过授权的用户才能访问这些方法。这显然需要连接到身份验证服务 然而,我和我的团队经常乘坐火车和飞机旅行,那里有不可靠的WIFI服务。在飞机旅行中删除这些属性进行开发,然后将它们重新投入生产,这不是一个可行的解决方案。我希望有一个选项来配置web服务,以便它在尝试进行身份验证时不执行任何操作,这样我们仍然可以在长途旅行中进行开发。我见过一些自定义身份验证方案,但有没有简单的“不做任何事情”的方法,或者简单的自定义身份验证方案的

在开发、登台和生产中,我的控制器使用[Authorize]属性来确保只有经过授权的用户才能访问这些方法。这显然需要连接到身份验证服务


然而,我和我的团队经常乘坐火车和飞机旅行,那里有不可靠的WIFI服务。在飞机旅行中删除这些属性进行开发,然后将它们重新投入生产,这不是一个可行的解决方案。我希望有一个选项来配置web服务,以便它在尝试进行身份验证时不执行任何操作,这样我们仍然可以在长途旅行中进行开发。我见过一些自定义身份验证方案,但有没有简单的“不做任何事情”的方法,或者简单的自定义身份验证方案的一个简单示例,它不做任何事情?

好的,从一些更复杂的示例中得出这个结论:

    public class LocalAuthenticationHandler : AuthenticationHandler<AuthenticationSchemeOptions>
    {
        public LocalAuthenticationHandler(
            IOptionsMonitor<AuthenticationSchemeOptions> options,
            ILoggerFactory logger,
            UrlEncoder encoder,
            ISystemClock clock)
            : base(options, logger, encoder, clock)
        {
        }

        protected override Task<AuthenticateResult> HandleAuthenticateAsync()
        {
            // Create an empty claims identity and pass it off as a valid user.  This is only valid in a local build environment to bypass the
            // web-based authentication service.
            var principal = new ClaimsPrincipal(new ClaimsIdentity(Array.Empty<Claim>(), this.Scheme.Name));
            return Task.FromResult(AuthenticateResult.Success(new AuthenticationTicket(principal, this.Scheme.Name)));
        }
    }
公共类LocalAuthenticationHandler:AuthenticationHandler { 公共LocalAuthenticationHandler( IOPTIONS监视器选项, iLogger工厂记录器, URL编码器, ISystemClock(系统时钟) :基本(选项、记录器、编码器、时钟) { } 受保护的覆盖任务handleAuthenticateAync() { //创建空声明标识并将其作为有效用户传递。这仅在本地生成环境中有效,可以绕过 //基于web的身份验证服务。 var principal=newclaimsprincipal(newclaimsidentity(Array.Empty(),this.Scheme.Name)); 返回Task.FromResult(AuthenticateResult.Success)(新的AuthenticationTicket(主体,this.Scheme.Name)); } } 在startup.cs中

    serviceCollection.AddAuthentication(options => options.DefaultAuthenticateScheme = "Local")
        .AddScheme<AuthenticationSchemeOptions, LocalAuthenticationHandler>("Local", null);
serviceCollection.AddAuthentication(选项=>options.defaultAuthenticationScheme=“本地”)
.AddScheme(“本地”,空);