身份的方案名称是什么?



假设我使用以下内容:

services.AddIdentity<User, UserRole>()
        .AddEntityFrameworkStores<AppDbContext>();

设置了身份验证方案名称是什么?我在任何文档中都没有找到这个。我尝试寻找一个名称IdentityAuthenticationDefaultsIdentityDefaults的课程,但什么也没有找到。我尝试过" 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)]

相关内容

  • 没有找到相关文章