【发布时间】:2021-02-27 17:14:53
【问题描述】:
自定义身份验证方案和处理程序将被忽略。
当控制器方法由[Authorize] 注释时,即使将其设置为默认身份验证方案,我的方案也不会受到挑战。相反,发送 302 状态并重定向到 /Accounts/Login...。
不仅这个 URL 甚至不存在于我的应用程序中(我在客户端使用 Blazor WASM),而且我的应用程序中根本没有任何代码会导致这种行为。
当我直接在属性中指定它时调用我的身份验证处理程序:[Authorize(AuthenticationScheme = CustomAuthHandler.SchemeName)]
为什么默认身份验证方案被忽略,而是运行代码中根本没有指定的东西?
如果AddIdentity() 配置了这种意外行为,它记录在哪里以及如何重新配置?
如何让框架不忽略我的处理程序,注册为默认?
在我切换到 .NET 5 并开始使用 Identity 框架之前,一切正常。
这是我的ConfigureServices:
services.AddDbContext<ApplicationDbContext>(options =>
{
options.UseMySql(Configuration.GetConnectionString("DefaultConnection"), ServerVersion.FromString("10.5.6-mariadb"));
});
services.AddIdentity<ApplicationUser, IdentityRole>(
options =>
{
options.User.RequireUniqueEmail = true;
}
)
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddClaimsPrincipalFactory<ApplicationUserClaimsFactory>();
services.AddControllersWithViews();
services.AddRazorPages();
services.AddAuthentication(
options =>
{
options.DefaultScheme = CustomAuthHandler.SchemeName;
}
)
.AddScheme<AuthenticationSchemeOptions, CustomAuthHandler>(CustomAuthHandler.SchemeName, x => { });
【问题讨论】:
标签: c# asp.net-core asp.net-identity asp.net-core-webapi