Avatar billede cht Nybegynder
22. juli 2002 - 16:34 Der er 23 kommentarer og
3 løsninger

Tjek om to personer bruger samme brugernavn/adgangskode ved login

Jeg har et loginsystem og så er det jeg vil høre om der er nogen der har ideer til hvordan man kan tjekke om to personer bruger samme brugernavn/adgangskode.

Jeg har tænkt lidt på om det kan lade sig gøre at tjekke om session.sessionID skifter og hvis den så skifter tilbage til det samme igen, så må det vel betyde at to brugere bruger samme brugernavn/adgangskode. Nogen der evt. har andre ideer?
Avatar billede kefus Nybegynder
22. juli 2002 - 16:36 #1
hvad for et login system har du??
Avatar billede agg-zeus Nybegynder
22. juli 2002 - 16:41 #2
hvis du har lavet dit system ordentligt, så burde der ikke kunne være 2 brugere med samme brugernavn !!!
Avatar billede cht Nybegynder
22. juli 2002 - 16:51 #3
Det er en access database, hvor hver bruger har deres eget brugernavn og adgangskode og så er det jeg gerne vil gøre så det ikke er muligt for to brugere at bruger det samme brugernavn og adgangskode, hvis en person f.eks videre giver sit brugernavn og adgangskode.

>> agg-zeus

Jeg har måske ikke skrevet det præcist nok. Det er ved login at jeg gerne vil gøre, så to personer ikke benytter det samme brugernavn og adgangskode.

Normalt i de systemer jeg har set tjekker den kun om det er et gyldigt brugernavn/adgangskode man bruger ved login ikke om en anden person har benyttet samme brugernavn/adgangskode.
Avatar billede agg-zeus Nybegynder
22. juli 2002 - 16:53 #4
noget med

If Request.Form("brugernavn") = rs.fields("brugernavn") Then
  Response.Write "Brugeren eksisterer allerede!"
Else
' login
End If
Avatar billede cht Nybegynder
22. juli 2002 - 16:57 #5
Det er ikke det jeg vil tjekke. Det jeg vil tjekke er om en person allerede er logged ind med samme brugernavn og ikke om brugeren eksisterer!
Avatar billede eagleeye Praktikant
22. juli 2002 - 16:59 #6
Så skal du på en eller anden måde gemme/logge at en bruger er online, enten ved at gemme brugerneavet i en databse eller hele tiden logge tidspunkt for hvornår en bruger fortager sig noget, og hvis der er gået mere en 10 minutter så er brugeren offline.

Det har dog nogle ulemper, hvis en bruger lukke og åber sig browser igen kan han ført logge ind ca. 10 min efter, hvis man vil åbne din side i to selvstændige browser vinduer, det kan man heller ikke.
Avatar billede agg-zeus Nybegynder
22. juli 2002 - 17:01 #7
hmm... du kunne måske tilføje er felt i DB'en der hed "status" som der blev skrevet "Online" i når den 1. bruger logger på ! og så tjekke hvad der står i dette felt! f.eks.

If Request.Form("brugernavn") = rs.fields("brugernavn") Then
  If rs.fields("status")  = "online" Then
      Response.Write "Du er allerede online!"
  Else
      loginscript...
  End If
Else
  Response.Write "fejl..."
End If

eller noget lignende...
Avatar billede tmceu Praktikant
22. juli 2002 - 17:02 #8
Du tænker vel på at 2 personer ikke kan være logget ind samtidig ?

I så fald kunne det være noget med at du laver et online felt på bruger tabellen og opdaterer dette ved login/-out. Dermed kan du kontrollere for om brugeren allerede er logget ind.
Avatar billede kasperks Nybegynder
22. juli 2002 - 19:40 #9
Jeg gør det ved at logge brugeres MAC addresse.

Det har selvfølgelig den ulempe at hold kun kan logge på fra en bestem pc, men man kan jo ikke få alting.

Jeg ved godt at man kan ændre et netkorts mac addresse, men det er nok de færreste der gør det, og vis de gør så skal de nok finde en anden måde at komme på.
Avatar billede cht Nybegynder
22. juli 2002 - 19:45 #10
>> hvordan får man folks MAC addresse, når de går ind på en asp-side?
Avatar billede kasperks Nybegynder
22. juli 2002 - 20:00 #11
Avatar billede cht Nybegynder
22. juli 2002 - 20:11 #12
ok, men det er desværre ikke en løsning, der kan bruges, brugerene må gerne benytte forskellige computere.
Avatar billede kasperks Nybegynder
22. juli 2002 - 20:19 #13
Så tror jeg ikke rigtig du får det løst, ihvertifald ikke hvis du ikke vil over i et eller andet med at hvergang en bruger vil logge på så skal han vente på at han modtager et password via mail eller sms eller lign, men to personer kan jo fint dele et brugernavn og et password til en email konto også :(
Avatar billede eagleeye Praktikant
22. juli 2002 - 20:35 #14
Som jeg har skrevet tidligere kan tilføje en kolonne til din bruger tabel som heller last_action eller sådan noget... Hver gang en bruger logger ind og loader en side skal man så opdater kolonnen med Dato,Tid.

Fidusen skulle så være når man forsøger at logge ind så tjekker du på om last_action er ændre end 10 minutter. Hvis kolonnen er ældre end 10 minutter definere man så at man er offline.

Hvis du har en logout knap så skal den bare sætte dato-tiden i last_action kolonnnen til now - 10 minutter så kan man logge ind med det samme igen. Ligeledes for Session_OnEnd functionen.

metoden vil bevirke at man kan resikere at skulle vendte 10 minutter før man kan logge ind igen.
Avatar billede kasperks Nybegynder
22. juli 2002 - 20:41 #15
Det ændre da ikke noget ved det faktum at to personer kan dele et username / password.

Det kan godt være de ikke kan være logget ind på samme tid, men hvad er sansynligheden også for at de vil det?
Avatar billede eagleeye Praktikant
22. juli 2002 - 20:46 #16
Nej .. men det kan man jo aldrig sikre hvis man vil tillade man logger ind fra forskellig maskiner, det sikre dog at de ikke kan være online på samme tid.
Avatar billede kasperks Nybegynder
22. juli 2002 - 21:02 #17
Så ganske rigtig .... sikkerhed og brugervenlighen er ikke altid ting der følges ad
Avatar billede cht Nybegynder
22. juli 2002 - 21:26 #18
Nu har jeg fået udarbejdet en løsning, så det virker helt som det skal. Jeg har to felter i min database et der hedder sessionID1, et der hedder sessionID2 og et der hedder active_sessionID. Ved login tjekkes indholdet af active_sessionID, som angiver om det er sessionID1 eller sessionID2 der sidst har været brugt. Brugerens aktuelle session.sessionID gemmes så i det  af felter sessionID1 og sessionID2, der ikke sidst har været brugt. Hver gang en side åbnes vil det blive tjekket om brugerens session.sessionID er lig med den af sessionID1 og sessionID2 der ikke er aktiv, hvis dette er tilfældet betyder det at der er en anden person, der er logged ind med samme brugernavn.

Med denne løsning kan man sagtens logge ind lige så mange gange man vil, uden at skulle vente 10 minutter og det er kun hvis det sker på samme tid, så den samme person godt kan logge ind fra forskellige computere på forskellige tidspunkter. Det udelukker selvfølgelig ikke at to personer kan bruge samme brugernavn, hvis de logger ind på forskellige tidspunkter, det tror jeg ikke at man kan undgå, men nu kan det i hvert fald det, som det skal kunne.

I skal have tak for jeres forslag og jeg er meget taknemlig for jeres vilje til at hjælpe.
Avatar billede eagleeye Praktikant
22. juli 2002 - 21:35 #19
Det med de 10 minutter var også kun i værste tilfælde... :)

Så det der sker er at ham som logger først ind ryger ud hvis en anden logger ind med samme brugernavn..
Avatar billede cht Nybegynder
22. juli 2002 - 21:44 #20
Hvis en person logger ind med samme brugernavn er det begge personer, der bliver udelukke for systemet. Vi kan ikke have nogen der videregiver deres oplysninger og at flere personer logger ind med samme brugernavn og adgangskode, sådan skal det være :)
Avatar billede kichian Nybegynder
22. juli 2002 - 22:21 #21
-> kasperks : Har du testet at det virker på Internettet og ikke kun på lokal-netværket. Jeg tvivler stærkt (er 100 på) at det ikke funker på den anden side af din router.!!

Du har ikke løst dit problem!!
Forskellige brugere kan som du selv skriver, logge ind på forskellige tidspunkter. Og så er det lige fedt....
Og jeg må da indrømme at jeg ikke helt kan gennemskue din løsning. Den virker frygtelig kompliceret. Men såvidt jeg kan se, så er det muligt for NETOP 2 personer at være logget ind med det samme brugernavn/password.

Hvorfor bruger du ikke bare alm. sessioner og skriver brugerne ind og ud af en login-tabel ved login og Session_OnEnd. Evt. bruger en application-variabel.
For at virke optimalt kræver det selvfølgelig at folk logger ud som de skal. Ellers er der en 20 minutters ventetid.
Avatar billede cht Nybegynder
22. juli 2002 - 22:49 #22
>> kichian

Det virker også uden for mit lokalnetværk, jeg har testet det på internettet og det virker helt som det skal. Med min løsninger er jeg 100% sikker på at personerne kan logge ind lige så tit de har lyst, uden at de skal vente på at Session_OnEnd også selvom de ikke logger ud. Med min løsning er jeg helt sikker på ikke at udelukke personer, som ikke skal udelukkes og dem som skal udelukkes bliver udelukket. Jeg kan i øvrigt ikke se hvad application-variabel kan bruges til i denne sammenhæng.

Jeg vil også lige sige at jeg har løst mit problem, idet at nu kan to personer ikke logge ind med samme brugernavn og adgangskode på samme tid.
Avatar billede kasperks Nybegynder
23. juli 2002 - 07:50 #23
-> kichian

Jeg har ikke en router, jeg har en proAccess løsning fra tdc erhverv der kommer der ethernet direkte ud af væggen.

/Kasper
Avatar billede kichian Nybegynder
23. juli 2002 - 10:00 #24
-> kasperks : Det er ikke for at starte diskussionen op om MAC-adresser og Internet. Men TDC kører ikke ethernet over telefonlinien. Og ifg. TDC/Zillion hjemmeside har du mindst et ASDL-modem imellem xDSL-stikket og dit netkort.

-> cht:
Hvis det virker som det skal er det jo OK. Jeg vil lige kigge på din løsning en gang til :-)
Avatar billede cht Nybegynder
23. juli 2002 - 16:56 #25
>> kichian

Jeg kan godt sende asp-koden, hvis du også gerne vil se på den :)
Avatar billede cht Nybegynder
15. januar 2003 - 11:03 #26
-
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester