假设我使用以下内容:
services.AddIdentity<User, UserRole>()
.AddEntityFrameworkStores<AppDbContext>();
设置的认证方案名称是什么?我在任何文档中都找不到。我尝试寻找名称为IdentityAuthenticationDefaults
和IdentityDefaults
的课程,但一无所获。我尝试过“ Cookies”,但未设置为此。该应用程序运行良好,因此肯定设置了一些方案名称。
答案 0 :(得分:5)
IdentityConstants
是您在这里寻找的课程。这是您的特定问题(已删除xmldocs)的相关部分:
public class IdentityConstants
{
private static readonly string CookiePrefix = "Identity";
public static readonly string ApplicationScheme = CookiePrefix + ".Application";
...
}
IdentityConstants.ApplicationScheme
用作DefaultAuthenticateScheme
-值本身最终为 Identity.Application
。
设置方案here:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = IdentityConstants.ApplicationScheme;
options.DefaultChallengeScheme = IdentityConstants.ApplicationScheme;
options.DefaultSignInScheme = IdentityConstants.ExternalScheme;
})
以下是指向API参考文档的链接:
答案 1 :(得分:0)
IdentityConstants 下有静态字符串引用是愚蠢的,但是 AuthorizeAttribute 类或方法属性不能使用这些引用来设置 AuthenticationSchemes 属性,因为它必须是一个常量值。我创建了一个简单的共享常量类,其中包含解决此问题的必要条件,但希望 MS 提供一些 OOTB。
public class SharedConstants
{
public const string IdentityApplicationScheme = "Identity.Application";
}
然后就可以这样使用了。
[Authorize(AuthenticationSchemes = SharedConstants.IdentityApplicationScheme)]