Код: Выделить всё
services.AddAuthentication(
options =>
{
options.DefaultScheme = Constants.NoOpSchema;
options.DefaultAuthenticateScheme = Constants.NoOpSchema;
options.DefaultChallengeScheme = Constants.NoOpSchema;
options.DefaultSignInScheme = Constants.NoOpSchema;
options.DefaultSignOutScheme = Constants.NoOpSchema;
options.DefaultForbidScheme = Constants.NoOpSchema;
}
).AddScheme(Constants.NoOpSchema, "Custom Auth", o => { });
Код: Выделить всё
[Authorize(AuthenticationSchemes= Constants.NoOpSchema)]
[Route("api/[controller]")]
public class IndividualsController : Controller
Код: Выделить всё
[Authorize]
[Route("api/[controller]")]
public class IndividualsController : Controller
Я надеялся, что установка свойств DefaultScheme сделает эту работу . Достаточно интересно, я не нашел какого-либо конкретного обсуждения на эту тему.
Я делаю здесь что-то не так или мой ожидаемый результат неправильный?
Редактировать: Спасибо по вопросам, это мне очень помогло. Похоже, что сопоставление DefaultScheme используется промежуточным программным обеспечением аутентификации, которое я использовал только тогда, когда CustomAuthHandler не было на месте. Поэтому мне приходилось всегда добавлять AuthenticationMiddleware.
Edit2: К сожалению, оно все еще не работает. Чтобы немного улучшить мой вопрос: я добавляю промежуточное программное обеспечение, как обычно:
Код: Выделить всё
app.UseAuthentication();
app.UseMvc();
Код: Выделить всё
public class NoOpAuthHandler : AuthenticationHandler
{
public const string NoOpSchema = "NoOp";
public NoOpAuthHandler(IOptionsMonitor options, ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock) : base(options, logger, encoder, clock)
{
}
protected override Task HandleAuthenticateAsync() => Task.FromResult(AuthenticateResult.Success(new AuthenticationTicket(Context.User, NoOpSchema)));
}
Подробнее здесь: https://stackoverflow.com/questions/499 ... me-ignored
Мобильная версия