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