Я работаю над проектом в ASP.NET Core, в котором я использую токены JWT для аутентификации пользователей.
Я настроил JWTBearerDefaults
в моем файле Startup.cs
следующим образом:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "some.issuer",
ValidAudience = "some.issuer",
ClockSkew = TimeSpan.Zero,
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(Configuration["SecurityKey"])),
};
options.EventsType = typeof(CustomJwtBearerEvents);
});
Мое требование: при получении вызова API я должен иметь возможность получить токен и выполнить некоторые проверки. Для каждого метода в моем контроллере API я могу проверить токен и выполнить проверки, но я хочу, чтобы эта проверка вызывалась из одного места. Для этого в верхнем коде я добавил строку options.EventsType
.
Но проблема в том, что, как только я добавил эту строку, все вызовы API перестали работать, поскольку сервер выдает ошибку 500 internal server error
, а также ошибку CORS policy
. Но все прекрасно работает без этой строки.
Это ошибка, которую я получаю в своем клиентском браузере:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
Access to XMLHttpRequest at 'http://localhost:58402/api/User/GetAllDurations' from origin 'http://localhost:56040' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Есть идеи, почему это происходит? или есть ли другой механизм, где я могу достичь этой цели? Может ли кто-нибудь помочь мне в этом?
Спасибо.