У меня есть приложение, которое одновременно размещает Identity Server 4 и клиентское приложение (Vue), которое использует несколько служб отдыха, определенных в области для управления сайтом.Идея состоит в том, что пользователи, связанные с определенной ролью, могут получить доступ к клиентскому приложению и вызвать остальные службы для выполнения действий.
В настоящее время моя проблема заключается в том, что, когда API возвращает 302, когда пользователь не принадлежит роли администратора.Я хотел бы изменить это на 401, но у меня есть некоторые проблемы с этим.
Если бы это было простое приложение для ядра aspnet, то я бы просто передал лямбду свойству OnRedirectToLogin
обработчика cookie, который обрабатывает запрос.К сожалению, IS4 позволит мне установить только несколько основных настроек куки (срок действия и скольжение).Те же самые документы говорят, что я могу переопределить обработчик файлов cookie.Итак, я попытался сделать следующее:
services.AddIdentityServer()
... // other configurations
services.AddAuthentication(sharedOptions => {
sharedOptions.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;//IdentityServerConstants.ExternalCookieAuthenticationScheme;
sharedOptions.DefaultChallengeScheme = IdentityServerConstants.SignoutScheme;
})
... //other external providers...
.AddCookie( CookieAuthenticationDefaults.AuthenticationScheme, options => {
options.Events = new CookieAuthenticationEvents {
OnRedirectToLogin = ctx => {
if (ctx.Request.Path.StartsWithSegments("/Admin", StringComparison.OrdinalIgnoreCase)) {
ctx.Response.StatusCode = (int) HttpStatusCode.Unauthorized;
}
return Task.CompletedTask;
};
});
Я ожидал, что мой обработчик будет вызываться всякий раз, когда запрос перенаправляется на страницу входа, но это никогда не происходит.Кто-нибудь может помочь?
Спасибо
РЕДАКТИРОВАТЬ : просто чтобы добавить, что я также использую удостоверение aspnet для управления учетными записями пользователей ...