首页 > 解决方案 > .NET 5 - 添加 JwtBearer 作为默认架构时登录停止工作

问题描述

我在 .NET 5 中有一个项目来对用户进行身份验证,我有下面的结构并且效果很好!

var result = await signInManager.PasswordSignInAsync(user, pass, true, lockoutOnFailure: false);

但是,当我添加默认的AuthenticatteSchemeChanllengeScheme以使用承载令牌时,它会通过PasswordSignInAsync停止工作,并且只有承载令牌auth有效

options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;

是否可以使用PasswordSignInAsync通过表单对用户进行身份验证,但也可以使用不记名令牌来连接第三方服务?

这是完整的代码:

var key = Encoding.ASCII.GetBytes(configuration["App:Token:Secret"]);
            services.AddAuthentication(options =>
                {
                    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                })
                .AddJwtBearer(options =>
                {
                    options.RequireHttpsMetadata = false;
                    options.SaveToken = true;
                    options.TokenValidationParameters = new TokenValidationParameters
                    {
                        ValidateIssuerSigningKey = true,
                        IssuerSigningKey = new SymmetricSecurityKey(key),
                        ValidateIssuer = false,
                        ValidateAudience = false,
                        ClockSkew = TimeSpan.Zero
                    };
                });

标签: c#asp.netasp.net-core.net-5bearer-token

解决方案


推荐阅读