Как называется схема для идентификации?
Допустим, я использую следующее:
services.AddIdentity<User, UserRole>()
.AddEntityFrameworkStores<AppDbContext>();
Какое имя схемы аутентификации устанавливается? Я не нашел это ни в одной документации. Я пытался найти класс с именами IdentityAuthenticationDefaults
а также IdentityDefaults
но ничего не нашел. Я пробовал "Cookies", но это не установлено. Приложение работает хорошо, так что, конечно, есть некоторые имена схем.
2 ответа
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 есть статические строковые ссылки, но они не могут использоваться атрибутом класса или метода AuthorizeAttribute для установки свойства AuthenticationSchemes, поскольку оно должно быть постоянным значением. Я создал простой класс общих констант, который содержит все необходимое, чтобы обойти это, но хочу, чтобы MS предоставила что-то OOTB.
public class SharedConstants
{
public const string IdentityApplicationScheme = "Identity.Application";
}
Тогда вы можете использовать это так.
[Authorize(AuthenticationSchemes = SharedConstants.IdentityApplicationScheme)]