Zmienna sesyjna i globalna ginie

0

Piszę prostą stronę w ASP.NET MVC 4 i mam problem, bo sesja mi ginie. Próbowałem użyc zmiennej globalnej i też ginie.

Mam taki kod:

Session["LOGGED"] = true;
(...)
if((bool)Session["LOGGED"] == true)
    WyświetlZawartoscDlaZalogowanych();
else
    WyswietlFormularzLogowania();

I po zalogowaniu jest Ok, tylko gdy przejdę do innej podstrony zaraz mnie wylogowuje... Tak jakby sesja ginęła gdzieś.

Spróbowałem ze zmienną globalną (static public bool UserLoggedIn = true;) i też przy przejściu do innej strony ginie mi jej wartość...

Nie wiem co się dzieje. Przejście do innej podstrony robi tak, że za każdym razem znowu prosi o logowanie.

Proszę o pomoc.

4

Dopiero raczkuje w mvc, wiec może czegoś nie wiem ale czemu nie używasz FormAuthentication? Wtedy możesz sprawdzić czy user jest zalogowany przez Request.IsAuthenticated.

0

@somekind

Nie, to by było za proste. Trzeba wymyślić swój sposób, lepszy niż wszystkie inne! ;)

Najłatwiej to wyśmiać. Żałosny jesteś.

Wracając do tematu:
Oprócz logowania chcę zrobić na stronie moduł sklepu z koszykiem.
Produkty, które klient wybierze do koszyka chciałbym trzymać w sesji.
Też mi ten koszyk zginie jak ogólnie giną mi wartości zmiennej sesyjnej.
Testowałem na komputerze lokalnym i na hostingu - to samo tu i tu.

Problem nadal nierozwiązany.

0

Spróbuj w pliku Global.asax.cs dodać ten kod:

 protected void Session_Start()
   {
   }
0

Nie wiemy nic o Twoich ustawieniach sesji z configa

0
Biały Kot napisał(a):

Najłatwiej to wyśmiać. Żałosny jesteś..

Żałosne jest nie wstawienie kodu, opisu konfiguracji i opisu czynności umożliwiających odtworzenie błędu, i oczekiwanie, że forumowa wróżka coś wywróży.
Na razie ten kod wygląda na syndrom wynajdowania koła na nowo, co owszem, jest śmieszne.
Nie wspominając już o tym, że sam pomysł używania sesji jest słaby.

0

@somekind Jak nie sesja to co innego? Czemu użycie sesji jest "śmieszne"?

0

Nie napisalem, że sesja jest śmieszna. Sesja jest groźna.
Śmieszne jest wynajdowanie koła od nowa, czyli pisanie swojego bieda-uwierzytelniania opartego na magicznych zmiennych w sesji zamiast skorzystania z gotowca zgodnie z dokumentacją.
A ogólnie sesja to same problemy, do przekazywania danych między akcjami i widokami służą inne mechanizmy.

0

No właśnie mi chodzi jakie to są mechanizmy. Dopiero się uczę i póki co kojarzę jedynie sesję i cash ew. ciasteczka. A jest coś jeszcze?

0

ViewModele, ViewData, TempData, Cache, query string, request body, HTTP header - zależy co, skąd i po co chcesz przekazywać.

0

Bo istnieja standardowe mechanizmy logowania i sprawdzania czy ktoś jest zalogowany.

0
somekind napisał(a):

ViewModele, ViewData, TempData, Cache, query string, request body, HTTP header - zależy co, skąd i po co chcesz przekazywać.

No tak, ale w kontekście logowania się do systemu to chyba jednak nie ma za bardzo alternatywy niż zmienna sesyjna.

0

Ale nie wlasna zmienna w sesji tylko użycie gotowego mechanizmu.

1
Kofcio napisał(a):

No tak, ale w kontekście logowania się do systemu to chyba jednak nie ma za bardzo alternatywy niż zmienna sesyjna.

Owszem, 10 lat temu tak było. Ale świat poszedł do przodu, nikt już sesji nie chce używać, wszędzie pchają tokeny.

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