Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sprečavanje duplog logovanja..

[es] :: .NET :: ASP.NET :: Sprečavanje duplog logovanja..

Strane: 1 2

[ Pregleda: 4187 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Sprečavanje duplog logovanja..30.10.2011. u 20:41 - pre 151 meseci
Treba mi pomoć. Ne znam kako da napravim da korisnik moje ASP.NET aplikacije nemože da se uloguje drugi put (sa neke druge mašine) ako je već ulogovan na nekoj prvoj mašini. Tj. korisnik sme biti ulogovan samo na jednoj mašini u toku jedne sesije koja traje npr. 1h (nebitno koliko) mislim dok se ne izloguje, tek onda može da se uloguje na nekoj drugoj mašini. Ako je već ulogovan na nekom kompu i pokuša da se uloguje i na drugom onda treba da mu izađe poruka "Zabranjena akcija. Korisnik 'tajitaj' je već ulogovan" ili nešto slično u obliku popupa... Kako da to ograničim?
Prvo što mi je padalo na pamet je da prilikom prvog logovanje upišem u bazu (npr. tabela USERS kolona LOGEDIN da kažem TRUE) ali pošto nemam neko univerzalno rešenje kako da uhvatim trenutak kada se korisnik izlogovao - da bih vratio taj USERS.LOGEDIN na FALSE - odustao sam od tog koncepta. Ima li neko ideju, savet, rešenje... ??? Unapred hvala.
 
Odgovor na temu

pl4stik
Senior .NET programmer/Consultant
oDesk
NI na nebu NI na zemlji

Član broj: 173596
Poruke: 715
*.dynamic.isp.telekom.rs.

Sajt: xx-auth.com.azhar.arvixe...


+31 Profil

icon Re: Sprečavanje duplog logovanja..31.10.2011. u 16:15 - pre 151 meseci
Pri logovanju zapisuj username/userid u application state, a pri isticanju sessiona ga brisi iz app state. Pri svakom logovanju proveravaj jel username/userid postoji u application state...
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Sprečavanje duplog logovanja..31.10.2011. u 17:22 - pre 151 meseci
Ima raznih tehnika, jedna je ova koju ti je dao pl4stik. u svakom slucaju takva vrsta ogranicenja je vestacka i veoma losa za korisnost programa (podji od cinjenice sta ce biti ako korisnik greskom ugasi browser i samim tim nema logoff koji bi rascistio login state na serveru). Korisnik se identifikuje svojom authentikacijom i trebalo bi da ga pustis da koristi odakle i kako hoce. Mnogo bolja opcija za security (ako je to predmet ovog ahteva) je da recimo, kad detektujes pokusaj logina sa IP adrese razlicite od trenutne sesije da korisnika pitas neko tajno pitanje na koje samo on zna odgovor.

Prohibicija duplih sesija sa stanovista sigurnosti nije resenje, sattisticki verovatnoca da se napadac i zrtva bti ulogovani u isto vreme daleko je manja od veovatnoce da ce napadac pokusati login van tog vremena.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Re: Sprečavanje duplog logovanja..03.11.2011. u 12:37 - pre 151 meseci
Čekaj, ako sam dobro razumeo ja i ako koristim ovaj način preko application state opet moram programski da ga očistim (da izbrišem user id iz njega)? Molim vas odgovorite mi na ovo.
To mi onda nije rešenje jer ja nemogu da uhvatim trenutak kada korisnik napusti web aplikaciju (samovoljno ili slučajno, gašenje brovsera, restartovanje računara).
Treba mi način koji obuhvata i ovo nasilno napuštanje aplikacije (tj. nenamerno - sve osim klika na "logoff") znači da uopšte nezavisi od akcije korisnika nego da aplikacija sama zna da li je taj neki korisnik trenutno koristi ili ne.
Ovaj zahtev nije toliko vezan za sigurnost. Nisam ovo pitanje postavio zbog situacije korisnik i napadač već nesme ni isti korisnik (pravi, validan, legalan..) da se uloguje jednom pa da pređe na drugi komp i opet se uloguje.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Sprečavanje duplog logovanja..03.11.2011. u 12:58 - pre 151 meseci
Citat:
mmix:
U svakom slucaju takva vrsta ogranicenja je vestacka i veoma losa za korisnost programa (podji od cinjenice sta ce biti ako korisnik greskom ugasi browser i samim tim nema logoff koji bi rascistio login state na serveru). Korisnik se identifikuje svojom authentikacijom i trebalo bi da ga pustis da koristi odakle i kako hoce. Mnogo bolja opcija za security (ako je to predmet ovog ahteva) je da recimo, kad detektujes pokusaj logina sa IP adrese razlicite od trenutne sesije da korisnika pitas neko tajno pitanje na koje samo on zna odgovor.

Prohibicija duplih sesija sa stanovista sigurnosti nije resenje, sattisticki verovatnoca da se napadac i zrtva bti ulogovani u isto vreme daleko je manja od veovatnoce da ce napadac pokusati login van tog vremena.


Vrlo mnogo se ne slažem sa ovom konstatacijom.
Aplikacija moje firme, takođe zabranjuje duplo logovanje (nije web aplikacija). Razlozi su:
1. Sprečava se "deljenje" računa (čest slučaj da korisnici, da bi zaobišli sistem privilegija, znaju međusobno lozinke, pa koriste onja račun koji ima privilegije da uradi posao. Politika privilegija mora da bude takva da se zna ko je uradio posao i šta ima prava da radi.)
2. Moguće je da zbog tehničke greške dođe do prekida konekcije, a u tom slučaju neki objekti u bazi mogu biti lokovani zaglavljenim procesom.

Mi imamo tabelu sa spiskom ulogovanih korisnika i proceduru za logout koja je obavezna.
Ukoliko korisnik slučajno, ili zbog greške, napusti sesiju bez logouta, sledeće prijavljivanje mu daje poruku da je već ulogovan, kao i opciju da nasilno prekine proces koji je vezan za sesiju. Preko tabele ulogovanih, kao i podataka o sesiji iz sistemskih tabela, "ubija" se proces (ukoliko još uvek postoji) i dozvoljava se dalji rad.
Rešenje koje smo napravili je vezano za Oracle bazu, tako da ti samo dajem generalnu ideju...
 
Odgovor na temu

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Re: Sprečavanje duplog logovanja..09.11.2011. u 10:58 - pre 151 meseci
@djoka_l
Ne znam kako funkcioniše ovaj tvoj sistem ali je verovatno je glomaznija aplikacija u pitanju. Ono što ja imam je običan asp.net sajt sa sql bazom tako da nisam siguran da imam sve što je potrebno da bih napravio nešto slično kao ovo što si opisao. Npr. Kako ubijaš taj neki proces? ja to nemam, ja imam samo sesije korisnika, .. ne znam da li sam te dobro razumeo...
Citat:
i proceduru za logout koja je obavezna

Je si li mislio na neku proceduru operacija koje korisnik treba da izvede ili o sql proceduru?
Citat:
nasilno prekine proces koji je vezan za sesiju

Kako vezujem proces za sesiju ? i koji proces uopšte?
Nisam siguran da bih mogao da izvedem ovo što si opisao zvuči mi suviše komplikovano za mene.
 
Odgovor na temu

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Re: Sprečavanje duplog logovanja..09.11.2011. u 11:19 - pre 151 meseci
@pl4stik
Citat:
a pri isticanju sessiona ga brisi iz app state

Kada ističe session? Da li kada istekne ovo
Citat:
<sessionState timeout="480" />

ili kada korisnik normalno (logout) ili nasilno (zatvaranje strane na X ili gašenje brovsera, restart kompa) napusti web aplikaciju?

.. elem ..

Našao sam negde na netu da bi moglo da se uz pomoć Global.asax fajla da se ovo reguliše. Pošto u tom fajlu imaju event handleri:

Code:

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when the application is started
      
    End Sub

    Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when the session is started
       
    End Sub

    Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires at the beginning of each request
      
    End Sub

    Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires upon attempting to authenticate the use
       
    End Sub

    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when an error occurs
       
    End Sub

    Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when the session ends
        
    End Sub

    Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when the application ends
       
    End Sub


Meni sad nije najjasnije kada okidaju ova dva event hendlera "Session_End" i "Application_End" kada jedan a kada drugi? Tj. ako su u istom trenutku ulogovana 4 korisnika i onda jedan od ta 4 napusti aplikaciju nasilno da li to znači da njemu okida samo "Session_End"? a zbog ove ostale trojice koji su još uvek ulogovani ne okida "Application_End"? Da li "Application_End" okida samo kada zadnji korisnik napusti aplikaciju? Da li ja ovo dobro kontam ili kako je ispravno?
 
Odgovor na temu

pl4stik
Senior .NET programmer/Consultant
oDesk
NI na nebu NI na zemlji

Član broj: 173596
Poruke: 715
89.216.37.*

Sajt: xx-auth.com.azhar.arvixe...


+31 Profil

icon Re: Sprečavanje duplog logovanja..09.11.2011. u 11:32 - pre 151 meseci
On covek lepo kaze da nije u pitanju web app tako da od toga nema nista jer ako nista drugo nemas ovlascenja da kontrolises procese. Potpuno je druga stvar kad umesas client app u project...

Ono sto mozes da uradish je da jscriptom hvatash kad user napusta stranicu ili gasi browser i da saljes web request web servisu da brise korisnika iz application state-a...


To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Sprečavanje duplog logovanja..09.11.2011. u 11:32 - pre 151 meseci
Citat:
djoka_l
Aplikacija moje firme, takođe zabranjuje duplo logovanje (nije web aplikacija). Razlozi su:
1. Sprečava se "deljenje" računa (čest slučaj da korisnici, da bi zaobišli sistem privilegija, znaju međusobno lozinke, pa koriste onja račun koji ima privilegije da uradi posao. Politika privilegija mora da bude takva da se zna ko je uradio posao i šta ima prava da radi.)
2. Moguće je da zbog tehničke greške dođe do prekida konekcije, a u tom slučaju neki objekti u bazi mogu biti lokovani zaglavljenim procesom.


kad malo bolje pogledas, nista ti nisi sprecio. Ako neko ima dobrovoljno kompromitovan account on svejedno moze biti iskoriscen, samo prvo mora da se izloguje a to moze da odradi u stotinama situacija (odo ja po kafu, izlogovao sam se, udji pa odradi sta ti treba, itd), tako da nisi sprecio zloupotrebe sistema samo si promenio metod iskoriscavanja. Ovo pod 2 je tek posebna prica, dinamicki kurzori? U multi-user aplikaciji u 2011oj?

Nemoj da se ljutis, ali ovo sve mirise na veoma lose koncipran projekat, lose odradjene poslvne procese u vezi audita, ocigledan nedostatak odgovornosti za postupke (inace bi prioritetni korisnik cuvao svoje kredencije) i veoma los odabir metodologije rada sa bazama za distribuirani sistem.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

pl4stik
Senior .NET programmer/Consultant
oDesk
NI na nebu NI na zemlji

Član broj: 173596
Poruke: 715
89.216.37.*

Sajt: xx-auth.com.azhar.arvixe...


+31 Profil

icon Re: Sprečavanje duplog logovanja..09.11.2011. u 11:41 - pre 151 meseci
Onog momenta kad postavis sajt kreira se Application state i gasi se kad ti sajt vise nije aktivan i on je samo jedan pa ga svi korisnici dele. Session state se kreira svaki put kad user pristupi sajtu i traje valjda bese 45min po defaultu i svaki user ima svoj session state tako da ga ne dele medusobno.

To ti je u dve recenice jedna vrlo mocna stvar u .NET-u, a za vise proveri ovde:

http://www.asp.net/general/videos/application-level-objects

http://www.asp.net/general/videos/session-level-objects
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
 
Odgovor na temu

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Re: Sprečavanje duplog logovanja..09.11.2011. u 16:09 - pre 151 meseci
@pl4stik
Citat:
Ono sto mozes da uradish je da jscriptom hvatash kad user napusta stranicu ili gasi browser i da saljes web request web servisu da brise korisnika iz application state-a...


heh .. to je prvo što sam probao. Been there tried that i video da nepostoji ultimate rešenje da preko JS uhvatiš event napuštanja/zatvaranja stranice a da je crossbrowser i crossbrowserversion zato što ima milion načina da nasilno napustiš sajt (gašenje taba, gašenje brovsera na X na ALT+F4, desnim u start meniju pa close, end process iz task managera ili end task, namerno ili slučajno restartovanje kompa ili gašenje). Čak u različitim verzijama istog brovsera u jednoj ispali event u drugoj neće itd. a tek IE............. Što se tiče te klijentske strane to je nemoguće, mora da bude sa serverske strane.
Ovaj tvoj zadnji post mi je više logično da je tu rešenje pomoću onog eventa u Global.asax
Code:

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
         ' Fires when the session ends
         
     End Sub
 
Odgovor na temu

pl4stik
Senior .NET programmer/Consultant
oDesk
NI na nebu NI na zemlji

Član broj: 173596
Poruke: 715
*.dynamic.isp.telekom.rs.

Sajt: xx-auth.com.azhar.arvixe...


+31 Profil

icon Re: Sprečavanje duplog logovanja..09.11.2011. u 17:46 - pre 151 meseci
To sam davno pravio i meni je radilo poso...

Probaj Cookieless Forms Authentication ako ti odgovara...
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
 
Odgovor na temu

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Re: Sprečavanje duplog logovanja..10.11.2011. u 13:37 - pre 151 meseci
Džabe se ja nadam kad ovaj event neće da ispali nijednom:
Code:

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
          ' Fires when the session ends   //jeste al malo sutra
          
End Sub


Zatvorim stranicu tj. web app tako što zatvorim tab u brovseru i event ne ispali što znam tako što sam stavio da

Code:

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
          ' Fires when the session ends   //jeste al malo sutra
          justExecQuery("update WEB_Korisnici set PORUKE += 'Session_End - ed on: " & Date.Now.ToString() & "'")          
          justExecQuery("update WEB_Korisnici set ulogovan = 0, vremelogovanja = null where IDKlijenta = 512") 'čisto da bih probao da li radi
End Sub


..pogledam u bazu i dalje stoji ulogovan 1.
Da li je moguće da on čeka da istekne ovih

Code:

<sessionState timeout="480"/>

koliko sam stavio u web.config.
E sad bi ja pitao lika što je napisao ovaj komentar
Citat:
' Fires when the session ends

ŠTO LAŽEŠ POŠTEN NAROD?!
Ispravite me ako grešim..
 
Odgovor na temu

maksvel

Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Sprečavanje duplog logovanja..10.11.2011. u 14:09 - pre 151 meseci
Kraj sesije je kad istekne ili kad eksplicitno završiš sesiju. Takav je HTTP - "on" na serveru ne zna šta ti radiš. Jedino da skratiš Session Time, pa da korisnik mora da ga obnavlja i time smanjiš "granulaciju" vremena, ali to bi bilo smorno za korisnika.
Ili da se obavezno koristi IE, pa onda da vidiš specifično rešenje za njega preko JS ili sl. Opet neugodno
Miljan je dao neke alternativne opcije, ne znam možeš li ih iskoristiti kod sebe...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Sprečavanje duplog logovanja..10.11.2011. u 19:19 - pre 151 meseci
Session_End nije garantovan da ce opaliti. tj pali samo u inProcess session modelu, kad je ukljucen drugaciji model onda se podrazumeva da ces mozda koristiti web-farm konfiguraciju u kojoj zapravo imas visestruki state (na svakom dotaknutom serveru u farmi po jedan) pa ne postoji uniformni nacin da se zna kad zapravo poslednja od tih sesija umire.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

pl4stik
Senior .NET programmer/Consultant
oDesk
NI na nebu NI na zemlji

Član broj: 173596
Poruke: 715
*.dynamic.isp.telekom.rs.

Sajt: xx-auth.com.azhar.arvixe...


+31 Profil

icon Re: Sprečavanje duplog logovanja..10.11.2011. u 20:36 - pre 151 meseci
AFAIK jedini nacin da uhvatish gasenje browsera je js-om ali ako hoces da osigurash da ti korisnik bude ulogovan samo na jednom kompu mozes slobodno da npr. napravish custom login pa se svaki put korisnik kad klikne login button prvo izloguje pa loguje. Naravno osigurash ako koristish login controlu da ne moze da chekira remember me i to ti je to siguran si da kad se korisnik loguje nije logovan nigde vise...
To sto nekoliko miliona ljudi tvrdi da nisi u pravu ne znaci da stvarno nisi - Frank Zappa

https://youtu.be/DLe358DPGXU
 
Odgovor na temu

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Re: Sprečavanje duplog logovanja..11.11.2011. u 00:39 - pre 151 meseci
@mmix
5 min posle slanja mog prethodnog posta sam našao na netu taj mali detalj da mora u web.config-u da se postavi
Code:

<sessionState mode="InProc" />

da bi se Session_End ispalio, što sam ja odmah uradio ovako:
Code:

<sessionState mode="InProc" cookieless="false" timeout="241"/>

međutim rezultat nije bio zadovoljavajući i dalje se Session_End ne rejzuje i meni u bazi i dalje ostaje ulogovan (1).
Da li možda treba da se podesi nešto na IIS-u da bi ovaj sessionstate model bio InProcess ili je dovoljno samo staviti ovo gore u web.config?

@maksvel
Poz.
Na "nesreću" ne mogu/ne smem da se ograničim samo na IE mora da bude još barem FF ili Chrome. Ja bih najradije izbacio IE potpuno ali ni to ne smem.
Ako si mislio na ovaj predlog:
Citat:

kad detektujes pokusaj logina sa IP adrese razlicite od trenutne sesije da korisnika pitas neko tajno pitanje na koje samo on zna odgovor.

.. možda nisam dobro razumeo predlog ali ..
tu mi se opet javlja onaj problem što ja treba da, kada se završi ta sesija, izbrišem taj IP (iz application state-a ili baze) da bi mogao kasnije opet da se uloguje , a nemogu da rešim ovaj deo "kada se završi ta sesija" jer to bi trebalo da bude baš u trenutku napuštanja aplikacije. Ako sam podesio u web.config-u da je session timeout = npr 2h korisnik u ta dva sata mora da može da se uloguje, pa malo nešto radi, pa izloguje posle 4 min i tako 10 puta u kratkim vremenskim intervalima i, pri tom, prilikom svakog od tih logovanja njemu ne sme da bude dozvoljeno da se uloguje i sa druge mašine (dok god je ulogovan sa ove prve) i dok god ne napusti aplikaciju (na bilo koji način klikom na logout ili bilo koji drugi svojom voljom ili bez).

@pl4stik
JS event sa kojim sam pokušavao je onbeforeunload ali ni on nije pouzdan (u smislu crossbrowser, crossbrowserversion a pogotovo kod nasilnog napuštanja stranice). Prilikom rejzovanja onbeforeunload eventa sam slao AJAX zahtev gde sam ažurirao vrednosti u bazi (ono ulogovan postavio na 0). Još jedan problem sa ovim načinom ovim onbeforeunload JS eventom je bio što se on okida i prilikom refresh-a stranice pa bih onda morao i to da nekako razlikujem od napuštanja stranice.


Takođe mana ovakvog rešenja sa klijentske strane preko JS-a: Npr. korisniku iz nekog razloga zakuje računar i mora da ga restartuje ili mu brovser "NOT RESPONDING" pa mora da ubije process, nestigne da klikne na logout. U ovim scenarijima korisniku se nikad neće rejzovati onbeforeunload event i to je glavni razlog što sam se okrenuo od ovog rešenja sa JS.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Sprečavanje duplog logovanja..11.11.2011. u 10:55 - pre 151 meseci
Jesi cekao 4 sata? Postavio si timeout sesije na 4 sata

nadam se da ne ocekujes da IIS opali session_end kad korisnik ugasi browser, to se sigurno nece desiti. Sesija na serveru se zavrsava ili manuelno (Session.End) ili kad prodje timeout minuta od poslednjeg registrovanog zahteva.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.dynamic.sbb.rs.



+395 Profil

icon Re: Sprečavanje duplog logovanja..11.11.2011. u 11:20 - pre 151 meseci
Ja se u takvim situacijama ne oslanjam uopste na session event-e koji se ispaljuju izgleda po nekom random scenariju i suludo je oslanjati se na nesto sto je interna stvar iis-a .

Lepo napravim neku login tabelu u bazi gde belezim login vreme usera i timestamp.
U timestamp se upisuje vreme svaki put kada korisnik dodje ili klikne nesto na toj stranici .tj. upisuje se njegova aktivnost .

Ako nisu novi http zahtevi nego korisnik ima neku aktivnost koja se izvrsava preko javascripta onda se preko ajaxa se salje poruka serveru da se upise ponovo timestamp .

Ako drugi user dodje u isto vreme meri se razmak izmedju timestamp i logina pocetnog i ako je veci od nekog vremena npr. 5 min.
(napravis da se moze podesavati u web.configu, jer ovo vreme moze biti u nekim slucajevima malo a u nekim mnogo a sve zavisi od aplikacije )
to znaci da je korisnik bio neaktivan ili se izlogovao na x u browseru onda tek dolazi sledeci korisnik .

Nije ni to savrseno resenje jer postoji scenario ako nekom pozvoni telefon u toku rada pa poprica malo duze a realno nije ugasio x u brauzeri niti je neaktivan u smislu da je izasao iz kancelarije .

Naravno na stranici je prisutno logout dugme za savesne korisnike.

Ne vidim drugog nacina za hendlovanje ovakvih situacija na web aplikacijama.


Viva lollapalooza
 
Odgovor na temu

torb-d-man

Član broj: 156284
Poruke: 124



Profil

icon Re: Sprečavanje duplog logovanja..11.11.2011. u 12:58 - pre 151 meseci
@mmix
Citat:

Jesi cekao 4 sata? Postavio si timeout sesije na 4 sata

postavio jesam a čekao nisam. A očekivao sam da ispali session_end event zato što mi se u vižuelu to ispaljivalo (stavio sam bio MsgBox("session ended") u taj event) kada odem dole u treju desnim na onu ikonicu koja se pojavi kada pokreneš projekat (ASP.NET Development Server) pa Stop. Tada mi se pojavi msgbox sa porukom da je kraj sesije. I onda razmišljam "može li ovo da radi isto ovako u kad uploadujem aplikaciju negde na neki server". Zato sam i pitao plastik-a u mom četvrtom po redu postu u ovoj temi "Kada se ispaljuje session_end event".

@deerbeer
Citat:

Ako drugi user dodje u isto vreme meri se razmak izmedju timestamp i logina pocetnog i ako je veci od nekog vremena npr. 5 min.
(napravis da se moze podesavati u web.configu, jer ovo vreme moze biti u nekim slucajevima malo a u nekim mnogo a sve zavisi od aplikacije )
to znaci da je korisnik bio neaktivan ili se izlogovao na x u browseru onda tek dolazi sledeci korisnik .


Aham. A šta ako je, kao što kažeš, korisnik "se sa nekim zapričao" ili namerno čekao da istekne taj period od 5min da bi zloupotrebio aplikaciju, ulogovao se sa drugog računara radio malo na aplikaciji pa se onda vrati na onaj prvi i pokuša da opet nešto radi na aplikaciji - ti mu onda kažeš "Vaša sesija je istekla." i izloguješ ga? Jesam li te dobro razumeo?
 
Odgovor na temu

[es] :: .NET :: ASP.NET :: Sprečavanje duplog logovanja..

Strane: 1 2

[ Pregleda: 4187 | Odgovora: 21 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.