Как запретить перенаправление файлов cookie для входа в систему - PullRequest
0 голосов
/ 04 июня 2019

Я создаю интранет-сайт, который использует основной веб-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>();
    }

1 Ответ

1 голос
/ 04 июня 2019

Я немного больше покопался и думаю, что нашел свой ответ,

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
            opt =>
            {

                opt.Events.OnRedirectToLogin = ctx =>
                {
                    ctx.Response.StatusCode = StatusCodes.Status401Unauthorized;
                    return Task.CompletedTask;
                };
                opt.Events.OnRedirectToAccessDenied = ctx =>
                {
                    ctx.Response.StatusCode = StatusCodes.Status403Forbidden;
                    return Task.CompletedTask;
                };

            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...