Я создаю интранет-сайт, который использует основной веб-API в качестве бэкэнда и угловой в качестве внешнего интерфейса. Поскольку способ написания БД и общей структуры проекта был написан, у меня нетрадиционный способ авторизации пользователей. Я беру имя входа в Windows (не используя идентификационные данные или какую-либо страницу входа), а затем сравниваю его со списком авторизованных пользователей, которые есть в моей базе данных. У меня работает обработчик авторизации, однако я застрял в поиске способа предотвратить перенаправление моей политики на страницу входа (ни один не будет существовать). Вместо перенаправления я хочу просто получить код состояния 401, чтобы я мог использовать Angular для уведомления
Я провел различные поиски по переполнению Google / Stack, во всех примерах и решениях используются политики идентификации или токенов, я не иду по этому пути, я использую только поддельный файл cookie для проверки подлинности, чтобы моя политика авторизации работала
public void ConfigureServices(IServiceCollection services)
{
services.AddAutoMapper();
services.AddScoped<IChecklistRepository, ChecklistRepository>();
services.AddCors(o => o.AddPolicy("Angular", b=>
{
b.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin();
}));
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
opt =>
{
opt.LoginPath = null;
opt.AccessDeniedPath = null;
// Does not do anything
});
services.AddDbContext<SWAT_UpdateChecklistsContext>(opt => opt.UseMySql(Configuration.GetConnectionString("conn")));
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1).AddJsonOptions(o =>
{
o.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
services.AddAuthorization(opt =>
{
opt.AddPolicy("AccessUser", policy => {
policy.Requirements.Add(new UserAccess());
});
});
services.AddTransient<IAuthorizationHandler, AuthorizedUser>();
}