Exemple #1
0
        protected override async Task <HttpResponseMessage> SendAsync
        (
            HttpRequestMessage request,
            CancellationToken cancellationToken
        )
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            // If StateData such as username and JWT token is available in the session, use those values
            if (_httpContextAccessor.HttpContext.Session.GetStateData("StateData") != null)
            {
                token = _httpContextAccessor.HttpContext.Session.GetStateData("StateData")["_Token"];

                if (token != null)
                {
                    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
                }
            }
            else // If StateData such as username and JWT token is available in the cookie, use those values
            {
                if (_httpContextAccessor.HttpContext.Request.GetStateData("StateData") != null)
                {
                    // Set StateData in session, cookie and TempData
                    _stateHelper.SetState(_httpContextAccessor.HttpContext.Request.GetStateData("StateData"));
                    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
                }
            }

            return(await base.SendAsync(request, cancellationToken).ConfigureAwait(false));
        }
        [ValidateAntiForgeryToken] // Prevents XSRF/CSRF attacks
        public async Task <IActionResult> Login(UserLoginVM userLoginVM)
        {
            if (userLoginVM == null)
            {
                throw new ArgumentNullException(nameof(userLoginVM));
            }

            if (ModelState.IsValid)
            {
                using var client = _httpClientFactory.CreateClient("MMDB_API");

                using var userContent = new StringContent(JsonSerializer.Serialize(userLoginVM), Encoding.UTF8, "application/json");

                HttpResponseMessage httpResponseMessage = await client.PostAsync("users/login", userContent).ConfigureAwait(false);

                if (httpResponseMessage.IsSuccessStatusCode)
                {
                    var responseStream = await httpResponseMessage.Content.ReadAsStreamAsync().ConfigureAwait(false);

                    UserVM userVM = await JsonSerializer.DeserializeAsync <UserVM>(responseStream);

                    try
                    {
                        _stateHelper.SetState(userVM, userLoginVM.RememberMe);
                    }
                    catch (Exception e)
                    {
                        _stateHelper.ClearState();
                        TempData["jwt"]        = true;
                        TempData["jwtMessage"] = e.Message;
                        return(RedirectToAction("Index", "Home", new { area = "" }));
                    }

                    if (TempData.Keys.Contains("RedirectController"))
                    {
                        return(RedirectToAction(TempData["RedirectActionMethod"] as string, TempData["RedirectController"] as string, new { area = "" }));
                    }

                    return(RedirectToAction("Index", "Home", new { area = "" }));
                }
            }

            return(View(userLoginVM));
        }
Exemple #3
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IStateHelper stateHelper)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseSession();

            // If state data is available in cookie, add it to the session
            // User checked the remember me checkbox
            // ===========================================================

            app.Use(async delegate(HttpContext context, Func <Task> next)
            {
                if (context.Request.GetStateData("StateData") != null)
                {
                    stateHelper.SetState(context.Request.GetStateData("StateData"));
                }
                await next.Invoke().ConfigureAwait(false);
            });


            // Start Localization
            // ==================

            // Get language preference from cookie and set in session
            app.Use(async delegate(HttpContext context, Func <Task> next)
            {
                if (context.Request.Cookies.ContainsKey("culture"))
                {
                    string culture = context.Request.Cookies["culture"];
                    context.Session.SetString("culture", culture);
                }
                await next.Invoke().ConfigureAwait(false);
            });

            // Configure Localization options
            var supportedCultures = new[]
            {
                new CultureInfo("en-US"),
                new CultureInfo("nl"),
            };
            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("en-US"),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };

            localizationOptions.RequestCultureProviders.Clear();
            localizationOptions.RequestCultureProviders.Add(new CultureProviderResolverService());
            app.UseRequestLocalization(localizationOptions);

            // End Localization
            // ================

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "MyArea",
                    pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
Exemple #4
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IStateHelper stateHelper)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseSession();

            app.Use(async delegate(HttpContext context, Func <Task> next)
            {
                if (context.Request.GetStateData("StateData") != null)
                {
                    stateHelper.SetState(context.Request.GetStateData("StateData"));
                }
                await next.Invoke().ConfigureAwait(false);
            });

            // Start Localization
            // ==================

            // Get language preference from cookie and set in session
            app.Use(async delegate(HttpContext context, Func <Task> next)
            {
                if (context.Request.Cookies.ContainsKey("culture"))
                {
                    string culture = context.Request.Cookies["culture"];
                    context.Session.SetString("culture", culture);
                }
                await next.Invoke().ConfigureAwait(false);
            });

            // Configure Localization options
            var supportedCultures = new[]
            {
                new CultureInfo("en-US"),
                new CultureInfo("nl"),
            };
            var localizationOptions = new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture("en-US"),
                SupportedCultures     = supportedCultures,
                SupportedUICultures   = supportedCultures
            };

            localizationOptions.RequestCultureProviders.Clear();
            localizationOptions.RequestCultureProviders.Add(new CultureProviderResolverService());
            app.UseRequestLocalization(localizationOptions);

            // End Localization
            // ================

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }