02. maj 2003 - 19:22Der er
16 kommentarer og 1 løsning
Servlet filter til login.
Jeg er ved at lave en applikation som består af en masse .jsp sider. Til at styre hvorvidt mine brugere er logget ind, vil jeg benytte et servlet filter. Men med disse filtre har jeg ikke noget erfaring. Jeg har lavet et basic filter, men er i tvivl om nogle emner:
Når man skal logge ind sker det fra en .jsp side som kalder en bønne, der laver nogle db check. Til slut bliver der sat en boolean, som kan tilgåes via en ’boolean isOK()’ metode (true = logget ind). Jeg ønsker så at tjekke hver gang at en bruger tilgår en side om han er logget korrekt ind, og dette via et filter. Hvordan får jeg fat i min isOK() metode fra filteret? (Hvordan skal dette foregå i en servlet, skal man oprette et objekt af bønnen?)
Her er lige noget kode som mit filter ser ud indtil nu:
public void destroy() { this.filterConfig = null; }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //Her skal der så laves et tjek på om brugeren er logget korrekt ind hver gang han kalder en side! boolean check = ??
if (check == false) { response.sendRedirect("Login.jsp?errorcode1=yes"); }
1) container managed form based declarative security (der er eksempel på dette i begge links)
2) application managed programmatic security (der er et eksempel på dette i det sidste link) hvor man bruger session objektet til at gemme login-status
Jeg her valgt servlet filter fordi det ser ud som en rigtig god ide. jeg slipper så for at have den samme kode (som tjekker login status) på alle mine sider. Jeg har valgt løsningen med at lave det hele selv og ikke lade containeren stå for login. Og det eneste jeg mangler er dette filter, så kører det.
Indtil nu har hver side videresendt brugeren til en controller side som kører tjekket igennem via min loginBean.
OK det ser ud som noget af det rigtige men jeg har lige et forståelses prob. HttpSession ses.... henter sessionsobjektet. LoginObject mylogin = ses.getAttribute("login");-> "login" er dette navnet på det objekt som er blevet skabt af min bønne? ses.setAttribute("login", mylogin); Her er jeg ikke helt med. Er det det interne objekt mylogin som her for overført værdien... Jeg har en metode i min bønne som hedder isOK() som tjekker login. og jeg er lidt fikseret på at ville have fat i denne eller noget andet fra min bønne... (er det ikke det jeg skal??)
Jeg har ikke haft så meget tid til denne del. men har det stort set til at virke... sender lige noget kode så du kan se sagen... (senere..)
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.