asp .net MVC Razor - Tworzenie, zapisywanie i odczytywanie ciasteczek

0

Witam, piszę aplikacje internetową, która ma w sobie logowanie, chcę aby po ponownym uruchomieniu strony automatycznie się zalogowała, to też chce użyć ciasteczek. W sieci znalazłem coś takiego:

Response.Cookies.Add(new HttpCookie("Login"));

Niestety nie odczytuje mi tego ciasteczka, tak jakby ono nie istniało:


            foreach (HttpCookie cookie in Response.Cookies)
            {
                if (cookie.Name == "Login")
                {
                    //Zrób coś
                }
            }

Podczas wykonywania kodu, program nie wchodzi do tego foreach.

Jestem początkujący w asp dlatego będę wdzięczny za pomoc

0

Troszkę trudno coś powiedzieć po tych dwóch linijkach kodu. Tak naprawdę problem może być na froncie może być w samej apce. Zobacz najpierw czy ciasteczko dochodzi do użytkownika.

0

Dodawanie ciasteczka już dałem radę i odczytanie również:

        [HttpPost]
        public ActionResult Index(Models.User login)
        {
            if (ModelState.IsValid)
            {
                List<LoginViewModel> data = DBDataReader.GetLoginData(this.connection);

                foreach (LoginViewModel model in data)
                {
                    if (login.LoginName == model.login.LoginName && login.Password == model.login.Password)
                    {
                        HttpCookie cookie = new HttpCookie("User", login.Privilages.ToString());
                        cookie.Expires.AddMinutes(20);
                        HttpContext.Response.SetCookie(cookie);
                        return RedirectToAction("HomeUser", "App", model);
                    }
                }

            }

            return View();
        }

Odczytywanie:

            foreach (string cookie in Request.Cookies.AllKeys)
            {
                if (cookie == "User")
                {
                    return RedirectToAction("HomeUser", "App", new LoginViewModel() { privilages = (PrivilagesEnum.Privilages)Enum.Parse(typeof(PrivilagesEnum.Privilages), Request.Cookies["User"].Value) });
                }
            }

W internecie znalazłem kod do usuwania ciasteczek, ale wyrzuca exception:

        public ActionResult Logout()
        {
            HttpCookie cookie = new HttpCookie("User");
            cookie.Expires.AddDays(-1);
            Response.Cookies.Add(cookie);

            return RedirectToAction("Index", "Login");
        }

Exception:
screenshot-20200602110943.png

1
 Response.Cookies["User"].Expires = DateTime.Now.AddDays(-1);  

Spróbuj w ten sposób.

0

coś mi się wydaje że są tu robione jakieś ciężki wały na uwierzytelnianiu...

szczególnie tutaj:

if (login.LoginName == model.login.LoginName && login.Password == model.login.Password)

Czy tu są pobierane wszystkie "Loginy" z bazy?

List<LoginViewModel> data = DBDataReader.GetLoginData(this.connection);

1 użytkowników online, w tym zalogowanych: 0, gości: 1