08. maj 2002 - 10:24Der er
12 kommentarer og 3 løsninger
getRemoteUser
Jeg er ved at lave en jsp-side hvor jeg skal bruge login-navnet på den som er logget ind på klientmaskinen. Serveren skal kunne kende forskel på de forskellige brugere selv om de bruger den samme computer til at se siden med.
Måden at gøre det på burde være at skrive "request.getRemoteUser()". Men det returnerer bare "null". Der mangler tilsyneladende "authentication" af brugeren?!? Men hvordan fixer man det?
Hvis det har noget at sige, så kører klient-maskinerne Windows 2000 og selve applikationen kører på en tomcat-server på en unix-maskine...
Hvis du vil kende forskel på brugere skal du bruge en rigtig login skærm altså username password, eller brug cookies.
Den metode du foreslår virker ikke almindeligvis via http, heldigvis. Jeg tror de færreste mennesker ønsker deres login navn spredt på nettet hver gang de henter en side via http protokolen.
medions: De sider du linker til er temmelig ubrugeligt, specielt den første med tomcat, og side 2 viser jo netop at getRemoteUser() returnerer 'null'
Præcis som java API'en specificerer at den skal gøre hvis brugeren ikke en authenticatet.
Jeg er godt klar over at det ikke er hensigtsmæssigt hvis alle bare kunne få andres brugernavne oplyst, men det skal køre på et intra-net.
Det jeg spørger om er hvordan man giver en side lov til at "requeste" éns brugernavn. Hvordan gør man brugeren authenticated?
Cookies er ikke ønskværdigt og logins er for bøsser. ;) Desuden er der andre der kan, jeg har set det andre steder - desværre ved jeg bare ikke hvordan.
GetRemoteUser returnerer null, med mindre man i sin web.xml har sat container-managed security op, så brugeren mødes med en "standard-login-prompt". Det betyder jo så, at man skal finde ud af, hvordan serveren sættes op til at checke op mod brugerne i det lokale netværk, og det er formentlig muligt, men svært.
Undgå login-prompten helt, tror jeg ikke er muligt (men måske kunne et trick med at sætte Microsofts Information Server foran og en masse hokus pokus hjælpe??).
Hvis det er en tomcat4 du bruger, vil jeg anbefale dig at kigge på manager-applikationen (webapps/manager i standardinstallationen), det er et eksempel på container-managed security.
For at køre den, skal du først i filen tomcat-users.xml (under %tomcat_home%/conf) have defineret en bruger med rollen "manager".
Du skal være opmærksom på 1. Du undgår ikke en login-prompt. 2. Der er ikke umiddelbart synkronisering med lovlige brugere på netværket.
1. kan nok i princippet løses ved at sætte en Microsoft Information Server foran (jeg er dog ikke sikker). 2. Kan i princippet løses ved at skifte standard-realmen ud med en ldap-implementation, der kan synkroniseres med brugere af det lokale netværk, men det er nok heller ikke noget man "bare" lige gør.
Der er desværre ikke rigtigt kommet noget ud af det her som jeg kunne bruge til noget...
Synes godt om
Ny brugerNybegynder
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.