blum1
1.10.2008, 08:32:59
Witam
Mam dwa pytania natury projektowej.
Zrobiłem sobie prostą klasę do obsługi logowania.
Po zalogowaniu w sesji trzymam tylko id usera natomiast przy każdym odświeżeniu strony pobieram z bazy nazwę użytkownika (jedna sqlka) i uprawnienia do modułów (druga sqlka).
I tu pytanie czy takie podejście jest dobre czy może lepiej po zalogowaniu wczytać do sesji przynajmniej nazwę użytkownika co wyeliminowało by jedno zapytanie?
Jak u was w aplikacjach jest to rozwiązane ile rzeczy trzymacie w sesji czy tylko te najważniejsze czy używacie ją dość mocno jako "magazynek" ?
Pozdrawiam
dd1234
1.10.2008, 08:35:55
Witam,
Ja trzymam w sesji nazwę użytkownika i zmienną okreśającą poziom uprawnień. Nie wiem, czy jest to super fachowo, ale dział i jest dosyć proste do oprogramowania
Pozdrawiam
blooregard
1.10.2008, 08:41:42
Nie ma przeszkód, byś również inne dane usera trzymał sobie w sesji.
Natomiast uprawnienia odczytuj z bazy. Dlaczego? A np. dlatego, że jeśli ktos się zaloguje, a w międzyczasie admin zmieni mu uprawnienia dostępu do któregoś z modułów, on nadal będzie miał do niego dostęp, bo uprawnienia sprzed zmiany będą zapisane w sesji.
webdice
1.10.2008, 08:44:55
Elegancko było by trzymać tylko
ID użytkownika, a inne dane wyciągać z bazy w tych miejscach które są potrzebne, ale jak wiadomo programowanie to sztuka kompromisów i na poczet wydajności lepiej trzymać wszystko w sesji.
Cytat(blooregard @ 1.10.2008, 09:41:42 )

(...) Natomiast uprawnienia odczytuj z bazy. Dlaczego? A np. dlatego, że jeśli ktos się zaloguje, a w międzyczasie admin zmieni mu uprawnienia dostępu do któregoś z modułów, on nadal będzie miał do niego dostęp, bo uprawnienia sprzed zmiany będą zapisane w sesji.
To się wyloguje i zaloguje jeszcze raz, wyobraź sobie że przykładowo na naszej klasie za każdym razem jest odpytywana baza o to czy użytkownik ma dostęp do danej podstrony.
blooregard
1.10.2008, 09:36:21
No właśnie - skoro za każdym razem jest ona odpytywana, po co trzymac uprawnienia w sesji ?
A co do wylogowania/zalogowania jeszcze raz: jeśli admin usunie komuś uprawnienia do czegoś, do czego ten ktoś chciałby mieć jeszcze chwilkę dostęp, na pewno nie strzeli sobie w stopę robiąc logout/login, tylko będzie korzystał, dopóki ma stare uprawniena w sesji. Chodzi mi o sytuację, gdy ma w tym korzyść.
gladiror
1.10.2008, 11:47:12
Jak za każdym razem będziesz odpytywać bazę o takie rzeczy to zobaczysz jak to spowolni bazę... Wyobraź sobie że masz kilka tysięcy użytkowników danej strony i baza musi obsłużyć kilkadziesiąt tysięcy zapytań tych użytkowników... Czyżby strony ładowały się kilka sekund?
NaVarion
1.10.2008, 12:45:45
Cytat(blooregard @ 1.10.2008, 10:36:21 )

No właśnie - skoro za każdym razem jest ona odpytywana, po co trzymac uprawnienia w sesji ?
A co do wylogowania/zalogowania jeszcze raz: jeśli admin usunie komuś uprawnienia do czegoś, do czego ten ktoś chciałby mieć jeszcze chwilkę dostęp, na pewno nie strzeli sobie w stopę robiąc logout/login, tylko będzie korzystał, dopóki ma stare uprawniena w sesji. Chodzi mi o sytuację, gdy ma w tym korzyść.
To może kodzik, dzięki któremu admin będzie mógł zmienić u użytkownika, by po odświeżeniu strony go wylogowało?
blooregard
1.10.2008, 12:53:39
No co racja to racja z tymi zapytaniami. Ale w aplikacjach zamkniętych, z których korzysta w porywach kilkadziesiąt osób naraz nie widzę problemu.
Reasumując: każdy sposób jest dobry, jeśli spełnia oczekiwania twórcy i uzytkowników, działa zgodnie z oczekiwaniami i nie powoduje błędów.
nexis
1.10.2008, 12:59:21
Z prawidłowego punktu widzenia w sesji powinieneś trzymać tylko ID użytkownika i bardzo prawdopodobne jest, że nie tworzysz aplikacji dla tysięcy użytkowników, więc nie odbije się to w żaden sposób na Twojej aplikacji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.