Avatar billede johnner Nybegynder
12. november 2003 - 13:17 Der er 17 kommentarer og
1 løsning

Login-styring i ASP.NET

Hej

Jeg har den her webside hvor brugere kan logge ind, for så at kunne komme videre til de sider der nu kræver at man er logget ind.
Og jeg bruger sessions når jeg tjekker at brugeren er logget ind eller ej.

Hvordan sikrer man sig at én bruger kun kan være logget ind én gang pr. computer/ip, Så 2 personer ikke kan benytte den samme brugerkonto?

Jeg har prøvet med at sætte et "logget ind" flag i db'en, men så kommer der et problem hvis brugeren lukker browseren/computeren crasher, så flag'et ikke kan sættes tilbage til ikke logget ind - så det er ret uholdbart.
Avatar billede repsak Nybegynder
12. november 2003 - 13:21 #1
en mulighed er at lave et Applikationsobjekt:
Application["loggedin"] = new Arraylist();

i denne liste har du så alle de ipnumre som er logget ind. Husk at slette fra listen når brugeren logger ud :-)
Avatar billede odegaard Nybegynder
12. november 2003 - 13:27 #2
Du kan slette dem i Session_End event'et i global.asax
Avatar billede johnner Nybegynder
12. november 2003 - 13:28 #3
Hvad gør jeg så hvis brugeren ikke logger ud, men bare slukker for sin computer? Så vil denne IP/Bruger stadig være i listen, ikke?
Avatar billede repsak Nybegynder
12. november 2003 - 13:29 #4
nej, jeg mener at Session_End selv finder ud af det... Ellers kan du måske lave en form for time out?
Avatar billede odegaard Nybegynder
12. november 2003 - 13:30 #5
jo men session'en timer ud efter (default) 20 min. Det kan du fande i dit on-end event.
Husk dog også at hvis serveren bryder ned, så skal du rydde op i databasen ved Application_Start
Avatar billede odegaard Nybegynder
12. november 2003 - 13:30 #6
øh fange (ikke fande)
Avatar billede johnner Nybegynder
12. november 2003 - 13:38 #7
Dvs. hvis en bruger har været inde og hans computer er gået ned eller han har lukket for browseren, så skal han vente 20 min på at han må logge på igen.
Det er det jeg gerne vil undgå at arbejde for meget med sessions, for de har tendens til at være lidt ustabile (jeg ved ikke om de er forbedret i asp.net)
Avatar billede odegaard Nybegynder
12. november 2003 - 13:42 #8
har lige nærlæst dit krav. Du skriver "Hvordan sikrer man sig at én bruger kun kan være logget ind én gang pr. computer/ip"

Men det kan du jo ikke. Blot det at du vælger at have to browser vinduer åbne (men samme instans af browseren), gør at du ikke har den fjerneste mulighed for at se forskel på de to.

Er du sikker på at det er så fedt at forhindre at man kan være logget ind flere steder samtidigt?
Avatar billede johnner Nybegynder
12. november 2003 - 13:49 #9
Hvis nu denne person havde betalt for at komme ind på siden, så ville dem der havde siden ikke bryde sig om at flere personer kunne logge ind med samme brugernavn og kode.

Ellers må jeg prøve at lave det med windows login og brugerrettigheder, det må virke lidt bedre end sessions.
Avatar billede repsak Nybegynder
12. november 2003 - 13:56 #10
hvorfor virker min løsning ikke?
Avatar billede repsak Nybegynder
12. november 2003 - 13:57 #11
Det tager da hensyn til det du beder om - mednindre at jeg har overset et eller andet???
Avatar billede odegaard Nybegynder
12. november 2003 - 14:01 #12
jeg ser generelt et problem med at holde styr på, om brugeren har logget ind igen, eller om det er en anden bruger der forsøger at logge.
Og et IP tjek er heller ikke godt (hvordan man så end skulle gøre det). Bag en proxy har flere brugere jo den samme IP.
Avatar billede johnner Nybegynder
12. november 2003 - 14:11 #13
Ja, jeg kan godt se det virker på papiret, men sessions har det med at være ustabile og det ligner at de virker på samme måde som i det gamle ASP, men jeg accepterer svaret, selvom jeg ikke kunne finde på at bruge den løsning :)
Avatar billede repsak Nybegynder
12. november 2003 - 14:12 #14
ja, men lad os sige at du bruger en Hashtable som datastruktur. Så skriver du bare

((hashtable)Application["log"]).Put(ip, brugernavn);

og så en masse if-halløj. Det må da kunne løse problemet
Avatar billede johnner Nybegynder
12. november 2003 - 14:13 #15
Det med at holde styr på brugere / ipere vil jeg mene at windows user / active directory godt kan tage sig af, så det vil jeg give mig i kast med.
Avatar billede repsak Nybegynder
12. november 2003 - 14:15 #16
ok, kan man mon få lov at se hvordan din løsning bliver? :-)
Avatar billede johnner Nybegynder
12. november 2003 - 14:20 #17
Ja, jeg laver et program der kan oprette brugere, med en expire-date på. Denne bruger tilhører en gruppe, hvor brugerne kun kan logge ind 1 gang pr. bruger (sat op i windows), og så sætter jeg rettigheden i mappen på IIS til at den group kan komme ind på siden. Når brugeren så klikker sig ind på siden, vil den komme med en windows login/pass vindue.
Det er min plan, og jeg aner ikke om den virker.
Avatar billede repsak Nybegynder
12. november 2003 - 14:30 #18
hehe oki god kamp ;-)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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