Używam JSF 1.2 z funkcjami Richfaces i Facelets.Jak unieważnić sesję użytkownika podczas dwukrotnego logowania przy użyciu tych samych poświadczeń
Mam aplikację zawierającą wiele ziaren o zasięgu sesji i niektóre komponenty bean aplikacji.
Użytkownik loguje się za pomocą, powiedzmy, Firefoksa. Sesja jest tworzona z identyfikatorem = "A"; Następnie otwiera Chrome i loguje się ponownie z tymi samymi danymi uwierzytelniającymi. Sesja jest tworzona z identyfikatorem = "B".
Po utworzeniu sesji "B" chcę móc zniszczyć sesję "A". Jak to zrobić?
Również. gdy użytkownik w Firefoksie robi cokolwiek, chcę móc wyświetlić wyskakujące okienko lub powiadomienie "Wylogowano się, ponieważ zalogowałeś się z innego miejsca".
Mam sessionListener, który śledzi sesje utworzone i zniszczone. Chodzi o to, że mógłbym zapisać obiekt HTTPSession w zbiorze o zasięgu aplikacji i zniszczyć go, gdy wykryję, że użytkownik zalogował się dwa razy. Ale coś mi mówi, że jest po prostu źle i nie zadziała.
Czy JSF śledzi sesje gdzieś po stronie serwera? Jak uzyskać do nich dostęp za pomocą identyfikatora? Jeśli nie, to w jaki sposób wykluczyć pierwsze logowanie użytkownika po dwukrotnym zalogowaniu?
Dzięki za odpowiedź. Przypuszczam, że "sessionMap.put (" użytkownik ", użytkownik);" powinno być "sessionMap.put (nazwa użytkownika, użytkownik);". W przeciwnym razie, jeśli zaloguje się inny użytkownik z różnymi referencjami, wykopilibyśmy pierwszego użytkownika. – pakore
To nie jest normalne. Nie chcesz mieć różnych zalogowanych użytkowników podczas jednej sesji klienta. Nie należy również mylić mapy sesji z mapą aplikacji. – BalusC
Ok Teraz rozumiem, że sessionMap to ExternalContext.sessionMap. Działa :). – pakore