身份的方案名称是什么?
What is the scheme name for identity?
假设我使用以下内容:
services.AddIdentity<User, UserRole>()
.AddEntityFrameworkStores<AppDbContext>();
正在设置的身份验证方案名称是什么?我没有在任何文档中找到这个。我尝试寻找名称为 IdentityAuthenticationDefaults
和 IdentityDefaults
的 class,但一无所获。我试过 "Cookies" 但没有设置成这个。该应用程序运行良好,因此肯定设置了一些方案名称。
IdentityConstants
就是您在这里寻找的 class。这是您的特定问题的相关部分(已删除 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 参考文档的链接:
愚蠢的是,IdentityConstants 下有静态字符串引用,但 AuthorizeAttribute class 或方法属性无法使用这些引用来设置 AuthenticationSchemes 属性,因为它必须是常量值。我创建了一个简单的共享常量 class,其中包含解决此问题的必要条件,但希望 MS 提供一些 OOTB。
public class SharedConstants
{
public const string IdentityApplicationScheme = "Identity.Application";
}
那你就可以这样用了
[Authorize(AuthenticationSchemes = SharedConstants.IdentityApplicationScheme)]
假设我使用以下内容:
services.AddIdentity<User, UserRole>()
.AddEntityFrameworkStores<AppDbContext>();
正在设置的身份验证方案名称是什么?我没有在任何文档中找到这个。我尝试寻找名称为 IdentityAuthenticationDefaults
和 IdentityDefaults
的 class,但一无所获。我试过 "Cookies" 但没有设置成这个。该应用程序运行良好,因此肯定设置了一些方案名称。
IdentityConstants
就是您在这里寻找的 class。这是您的特定问题的相关部分(已删除 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 参考文档的链接:
愚蠢的是,IdentityConstants 下有静态字符串引用,但 AuthorizeAttribute class 或方法属性无法使用这些引用来设置 AuthenticationSchemes 属性,因为它必须是常量值。我创建了一个简单的共享常量 class,其中包含解决此问题的必要条件,但希望 MS 提供一些 OOTB。
public class SharedConstants
{
public const string IdentityApplicationScheme = "Identity.Application";
}
那你就可以这样用了
[Authorize(AuthenticationSchemes = SharedConstants.IdentityApplicationScheme)]