Per effettuare un test sul controllo personalizzato (non basato sui metodi BASIC o FORM) dei permessi degli utenti ho realizzato una web application di esempio che utilizza un filtro per controllare se è presente in sessione un oggetto "User" (che contiene i dati relativi ad un utente loggato) quando viene effettuata una richiesta verso qualsiasi cosa si trovi nella cartella "area_riservata" e se è presente mostra il messaggio "UTENTE LOGGATO" altrimenti "UTENTE NON LOGGATO".
La pagina principale della mia web application contiene solamente due tag link:
pagina
immagine
Il contenuto della cartella "area_riservata" dovrebbe essere irrilevante perché a me interessa quello che succede quando si effettua la richiesta.
Il metodo doFilter della classe filtro utilizzata per il controllo delle richieste è fatto nel seguente modo:
Quello che mi aspetto che succeda è che se un utente è loggato il filtro rilevi la presenza dell'oggetto User in sessione è lanci il primo messaggio in caso contrario lanci il secondo messaggio. Effettivamente quando cerco di accedere alla pagina html funziona tutto senza problemi ma quando cerco di accedere all'immagine ottengo tre messaggi di fila, come se "cliccassi" tre volte invece di una e non riesco a capire perché.codice:public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; User u = (User) req.getSession().getAttribute("user"); if (u != null) { System.out.println("UTENTE LOGGATO"); } else { System.out.println("UTENTE NON LOGGATO"); } chain.doFilter(request, response); }

Rispondi quotando