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

ASP 2.0 Kako spreciti visestruko logovanje korisnika

[es] :: .NET :: ASP 2.0 Kako spreciti visestruko logovanje korisnika

[ Pregleda: 2867 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

oggie

Član broj: 126613
Poruke: 140
212.62.49.*



+1 Profil

icon ASP 2.0 Kako spreciti visestruko logovanje korisnika20.12.2006. u 14:51 - pre 187 meseci
Ovo je takodje jedna od tema o kojoj se mnogo vode polemike. Kako da zabranim korisniku da se dva puta loguje pod istim imenom. Razmatrao sam varijante da se upisuje u bazu da li je logovan, pa ako jeste da ga ne pustam vise ali.....Dolazim do mnogo pitanja sta ako:

1. Nestane struje pa ne stigne da se izloguje
2. Ostane ulogovan na poslu, pa onda od kuce ne moze da pogleda aplikaciju
3. Zatvori browser pa se ne izloguje
4. Ode na drugu stranicu u browseru pa zaboravi....itd, itd

Ima li neko korektno resenje ili da ga pustam koliko hoce?
 
Odgovor na temu

Dejan Vesic
Dejan Vesic
CEO
IGT Ogranak Beograd
Beograd

Član broj: 84929
Poruke: 217
*.finsoft.co.yu.

Sajt: www.vesic.org


+1 Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika21.12.2006. u 08:52 - pre 187 meseci
Ne znam zbog čega ti to treba, ali ako ti baš treba:

1. Na Login postaviš Application[Njegov_Username] = SessionID

2. Za svaku bitnu operaciju proveravaš da li je gore ispunjeno. Ako nije, radiš logout i daješ komentar "Ulogovali ste se na drugom mestu, ova sesija je gotova"

Ovakvo rešenje ne pati od problema koje si gore naveo.
 
Odgovor na temu

oggie

Član broj: 126613
Poruke: 140
212.62.49.*



+1 Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika21.12.2006. u 09:45 - pre 187 meseci
Hvala na odgovoru, mada mi nije bas najjasnije. Evo ovako:

1. na masini 1 uloguje se user 1 i dobije session id=1
2. Na masini 2 uloguje se neko sa istim userom 1 i on ce dobiti session id=2

Sto znaci, ako ja dobro razumem, da ce on na onoj masini na kojoj radi uvek imati taj broj sesije koji je dobio pri logovanju i izraz ce uvek biti true.

Isprobacu u svakom slucaju, hvala.

A zasto mi to treba, pa ne znam ni sam.....pravim za korisnika web aplikaciju gde odredjeni korisnici pristupaju sa odredjenim pravima. Pa da se zastitim od moguce zloupotrebe da Pera koji ima veca prava od Zike da Ziki svoj username da Zika moze da radi sa vecim pravima nego sto ima.
A mozda i treba da ih pustim, po sistemu sta me briga....
 
Odgovor na temu

Dejan Vesic
Dejan Vesic
CEO
IGT Ogranak Beograd
Beograd

Član broj: 84929
Poruke: 217
*.finsoft.co.yu.

Sajt: www.vesic.org


+1 Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika21.12.2006. u 11:09 - pre 187 meseci
Citat:
oggie: Hvala na odgovoru, mada mi nije bas najjasnije. Evo ovako:

1. na masini 1 uloguje se user 1 i dobije session id=1
2. Na masini 2 uloguje se neko sa istim userom 1 i on ce dobiti session id=2

Sto znaci, ako ja dobro razumem, da ce on na onoj masini na kojoj radi uvek imati taj broj sesije koji je dobio pri logovanju i izraz ce uvek biti true.


Ne baš.

Kako Application važi za CELU aplikaciju, to znači da:

(1) Application("Pera") = 1

Sad, svaku operaciju koju pokuša (recimo brisanje nekog dokumenta), ti u kodu proveriš:

If (SessionID == Application("Pera")) Može da obriše ...

(2) Uloguje se na drugu mašinu -> Application("Pera") = 2

Sada će pokušaj rada na mašini 1 uvek biti neuspešan jer je izraz false
 
Odgovor na temu

bobanM
Boban Mikšin
Levi9 Global Sourcing
Novi Sad

Član broj: 61491
Poruke: 39
*.static.sbb.co.yu.



Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika21.12.2006. u 11:39 - pre 187 meseci
Pozdrav,

pogledaj Microsoft UIP Application Block

http://msdn2.microsoft.com/en-gb/library/ms998252.aspx
nije lepo da budem lud a da to ne znam
 
Odgovor na temu

oggie

Član broj: 126613
Poruke: 140
212.62.49.*



+1 Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika21.12.2006. u 13:25 - pre 187 meseci
Hvala, trenutno sam u guzvi, cim stignem pogledacu pa javljam sta sam uradio.
 
Odgovor na temu

oggie

Član broj: 126613
Poruke: 140
212.62.49.*



+1 Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika21.12.2006. u 14:11 - pre 187 meseci
Probao sam ovo sto mi je Dejan predlozio i deluje ok. Ali, nesto sam razmisljao, posto mi je glupo da na svakom dugmetu proveravam ove vrednosti kako bi bilo da na master page stavim timer koji ce da proverava ove vrednosti i cim se promene da obaveste usera da se neko ulogovao sa njegovim imenom.
E sad dolazim do pitanja, nisam video da postoji timer u asp.
Da li timer postoji i gde se nalazi i sta mislite da li bi ovo resenje bilo ok?
 
Odgovor na temu

bobanM
Boban Mikšin
Levi9 Global Sourcing
Novi Sad

Član broj: 61491
Poruke: 39
*.static.sbb.co.yu.



Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika21.12.2006. u 14:48 - pre 187 meseci
Citat:

Kako Application važi za CELU aplikaciju, to znači da:

(1) Application("Pera") = 1

Sad, svaku operaciju koju pokuša (recimo brisanje nekog dokumenta), ti u kodu proveriš:

If (SessionID == Application("Pera")) Može da obriše ...

(2) Uloguje se na drugu mašinu -> Application("Pera") = 2

Sada će pokušaj rada na mašini 1 uvek biti neuspešan jer je izraz false


Zar nece prilikom logovanja na drugu masinu isti korisnik dobiti novi SessionID, tako da "Pera" nikad vise nece moci da nastavi da izvrsava bitne operacije.

Opet ponavljam pogledaj Microsoft UIP Application block

Resuming Web sessions – This enables users to close browser sessions, and then later return to them with the ability to resume where they left off.
Transferring Web sessions – This enables one user to suspend a session, and another user to pick it up on another computer or one user to suspend a session on one device, and resume it on a different type of device.

nije lepo da budem lud a da to ne znam
 
Odgovor na temu

oggie

Član broj: 126613
Poruke: 140
212.62.49.*



+1 Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika21.12.2006. u 14:54 - pre 187 meseci
Priznajem da sam ovlas pogledao i nije mi bilo najjasnije, pa mi se ovo Dejanovo resenje ucinilo jednostavnije.
Ali sad sam nasao manu i ovom Dejanovom resenju. Naime ako se Pera ulogovao, pa se onda na drugoj masini uloguje Zika pod Perinim imenom, po ovom resenju bi bilo da ja zabranim prvom Peri da dalje radi jer se neko ulogovao pod njegovim imenom.
Ono sto ja zelim jeste da sprecim Ziku da se uloguje pod Perinim imenom jer se Pera vec logovao. Znaci ko se prvi logovao moze da radi, ostali stoj.

Problem kao sto sam rekao nije ni malo jednostavan kako izgleda, pa cu morati malo detaljnije da se pozabavim njim.
Hvala svima na pomoci.
 
Odgovor na temu

Dejan Vesic
Dejan Vesic
CEO
IGT Ogranak Beograd
Beograd

Član broj: 84929
Poruke: 217
*.adsl-1.sezampro.yu.

Sajt: www.vesic.org


+1 Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika21.12.2006. u 19:44 - pre 187 meseci
Citat:
oggie: Ali sad sam nasao manu i ovom Dejanovom resenju. Naime ako se Pera ulogovao, pa se onda na drugoj masini uloguje Zika pod Perinim imenom, po ovom resenju bi bilo da ja zabranim prvom Peri da dalje radi jer se neko ulogovao pod njegovim imenom. Ono sto ja zelim jeste da sprecim Ziku da se uloguje pod Perinim imenom jer se Pera vec logovao. Znaci ko se prvi logovao moze da radi, ostali stoj.


Zbog same prirode web aplikacija, ovo je vrlo loše rešenje.

Ako Pera zatvori browser, to ćeš saznati tek za 20 minuta kada istekne Session Timeout, a za to vreme ni Pera ni Žika neće moći da se uloguju.

Ovo sve naravno iz iskustva.

Ako hoćeš da ograničiš korisnika na JEDAN login, onda to neka bude POSLEDNJE ULOGOVAN. Pa nek Pera tuče Žiku po prstima što mu je uzeo sesiju i uništio pola sata kucanja koje je puklo na Save.

Citat:
Zar nece prilikom logovanja na drugu masinu isti korisnik dobiti novi SessionID, tako da "Pera" nikad vise nece moci da nastavi da izvrsava bitne operacije.


što i jeste poenta rešenja - poslednji može, svi ostali stoj. Zašto tako, eno ga objašenjene gore.

 
Odgovor na temu

oggie

Član broj: 126613
Poruke: 140
212.62.49.*



+1 Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika22.12.2006. u 07:48 - pre 187 meseci
Hvala na objasnjenju.
Jos ne znam da li da radim ovo ogranicavanje, ali iz mog velikog iskustva sa korisnicima mislim da bi bilo pozeljno. Korisnici uvak nadju nacin kako da ti zeznu aplikaciju, tako da sam jednom prilikom isao dotle da sam u posebnu tabelu upisivao sve ko se logovao, ko je sta menjao i na taj nacin smo hvatali korisnike koji "muljaju".
Posto mi je ovo prvi projekat u .NET-u pa jos web aplikacija, stvari se definitivno razlikuju, pa ce morati i pristup da se promeni. Da ne kazem da jos nisam stigao da testiram sta ce se desiti posle 20 min kad istekne sesija.
Hvala jos jednom na savetima.
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 898
*.sksyu.net.



+171 Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika22.12.2006. u 12:02 - pre 187 meseci
U sustini ja bi licno ostavio mogucnost da se loguje vise puta osim ako to nije ne pozeljno, kada user zahteva drukcije. Ne vidim zasto je ovo neki hendikep ali ako vec mora onda je ono Vesicevo resenje mozda i najbolje (mislim na koncept).
Jedino sto sam ja zapazio i licno mi se ne svidja je ovo
Citat:

2. Za svaku bitnu operaciju proveravaš da li je gore ispunjeno. Ako nije, radiš logout i daješ komentar "Ulogovali ste se na drugom mestu, ova sesija je gotova"


ako je to ono sto mislim, onda ovo moze biti dosta redundantan posao. Nemam bas nesto mnogo iskustva sa web based aplikacijama ali nesto sam malo testirao i cini mi se da bi ovaj deo mozda mogao da se preskoci na sledeci nacin:

U global.asax.cs staviti handler za FormsAuthentication_OnAuthenticate i napisati sledece
Code:

    public void FormsAuthentication_OnAuthenticate(object sender, FormsAuthenticationEventArgs args)
    {
        if (FormsAuthentication.CookiesSupported)
        {
            if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
            {
                FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(
                  Request.Cookies[FormsAuthentication.FormsCookieName].Value);             
                
                string s = (string)Application[ticket.Name];
                
                if (s != null)
                {
                    if (Request.Cookies[FormsAuthentication.FormsCookieName].Value != s)
                    {
                        FormsAuthentication.SignOut();
                        Application.Remove(ticket.Name);
                    }
                }
            }
        }
    }


u login strani prilikom validacije i kreiranja cookie-a napisati

Code:

HttpCookie k = FormsAuthentication.GetAuthCookie(userName, true);            
            k.Expires = DateTime.Now.Add(new TimeSpan(1, 1, 1, 5));
            Response.Cookies.Add(k);
            Application.Add(userName, k.Value);


I mislim da vise nista nije potrebno. Sta ovaj code radi? Prvo sto radi je da prilikom autentikacije user-a skladisti u application objekat vrednost cookie-a (na vrednost ne treba mnogo obracati paznju posto je kriptovana, za nas je bitno samo da znamo koja je to vrednost a ne i sta je).
Zatim onaj prvi deo, FormsAuthentication_OnAuthenticate event koji se nalazi u globalu, svaki put kada korisnik namesti zahtev ova f-ja proverava u application objektu da li postoji vrednost za user-a koji je autentikovan, tj. user koji pravi zahtev. Ukoliko postoji vrednost, proverava se da li je ta vrednost jednaka vrednosti koja je prosledena sa zahtevom u cookie-u. Ukoliko su te dve vrednosti jednake to znaci da je u aplication objektu korisnik koji se zadnji ulogovao sa tim korisnicim imenom, ukoliko te vrednosti nisu jednake znaci da se neko posle ulogovao sa istim korisnickim imenom sto na kraju dovodi do toga da se korisnik ispisuje (FormsAuthentication.SignOut).
Huh, sada kad sam procitao ponovo deluje mozda malo zbunjujuce ali zato je tu code pa...
 
Odgovor na temu

oggie

Član broj: 126613
Poruke: 140
212.62.49.*



+1 Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika22.12.2006. u 12:18 - pre 187 meseci
U ASP 2.0 nema global.asax , ne znam da li postoji neka zamena.
Ni meni se resenje da na svakoj akciji proverava ne dopada, to bi bio grozan posao jer imam na svakoj strani 10 dugmica.....
Zato sam mislio da stavim timer na master page i da na svaki sekund proveravam da li se jos neko ulogovao.
Ali tu sam dosao do problema jer izgleda da u ASP nema timer kontrole nego moraju da se skidaju neke sa neta, a nesto ne volim da radim sa neproverenim stvarima, pa sam za sada ostavio ovo.
Mislim da cu pustiti usere da se loguju koliko hoce pa ako bude nekih problema onda cu da vidim sta cu. Sad imam precih stvari.
Hvala na pomoci.
 
Odgovor na temu

mmelanny

Član broj: 84308
Poruke: 23
*.mediaworksit.net.



Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika22.12.2006. u 13:24 - pre 187 meseci
Naravno da ima global.asax, ali nije po default-u dodat kada pravis web projekat...Dodas ga sa Add New Item...
 
Odgovor na temu

oggie

Član broj: 126613
Poruke: 140
212.62.49.*



+1 Profil

icon Re: ASP 2.0 Kako spreciti visestruko logovanje korisnika22.12.2006. u 14:03 - pre 187 meseci
Hvala, korisna informacija. Nije mi bio potreban pa ga nisam nesto trazio.
 
Odgovor na temu

[es] :: .NET :: ASP 2.0 Kako spreciti visestruko logovanje korisnika

[ Pregleda: 2867 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

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