Я написал часть пользовательского промежуточного программного обеспечения, чтобы проверить, есть ли у пользователя конкретная претензия (требуется для использования приложения).Если пользователь не возвращает 422 Unprocessable.Однако я заметил, что если я не предоставляю токен, я получаю 422, а не 401. Если я проверяю свойство IsAuthenticated в пользовательском промежуточном программном обеспечении, это ложно, если вы не предоставляете токен, и true, если вы делаете.
Ниже мой Конфигурация из Startup.cs.Вы заметите, что UseAuthentication () происходит до UseClaimsValidationMiddleware () (мое пользовательское промежуточное ПО).
Мое понимание конвейера запросов было, что
Аутентификация сработает.Если пользователь не прошел проверку подлинности (токен на предъявителя (jwt) с использованием Auth0), промежуточное программное обеспечение замкнет и вернет 401.
Если пользователь прошел проверку подлинности, оно попадет в мое пользовательское промежуточное ПОи проверьте, существуют ли претензии.Если этого не произойдет, промежуточное программное обеспечение закроет запрос и выдаст 422.
Если утверждения существуют, они перейдут на промежуточное программное обеспечение UseMvc () и фактически запустят приложение.
Я действительно не понимаю, почему это происходит, любые идеи / указатели будут с благодарностью приняты:)
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Test");
c.RoutePrefix = string.Empty;
});
app.UseAuthentication();
app.UseClaimsValidationMiddleware();
app.UseMvc();
}