Salva ha scritto:
1) se l' utente effettua il login dalla pagina index.html, l' applicazione deve "ricordarsi" che l' utente è autenticato, quindi quando in un qualsiasi momento successivo l' utente prova ad andare sulla pagina aggiungi.jsp, l' applicazione deve consentirgli l' accesso a tale pagina.
Precisa cosa intendi per "in un qualsiasi momento successivo". Anche dopo che l'utente ha chiuso il browser e magari anche il PC? Il giorno dopo riapre il browser sul tuo sito e vuoi che sia automaticamente "loggato" senza passare di nuovo per la procedura di login?
Questo è quello che fanno molti siti, webmail, forum, ecc.. offrendo al login una opzione con la casellina [ ] da marcare, che a seconda di come viene espresso si può chiamare "Ricorda su questo computer" oppure "Ricorda per
X giorni" o ancora "Mantieni aperto per
X giorni".
E questo lo si fa con i "cookie". Appena dopo l'autenticazione, il server invia al client un cookie che invece di essere "di sessione" (ovvero che scade quando il browser viene chiuso) ha una scadenza molto più lunga, ad esempio scade dopo 90 giorni da quel momento. E questo cookie viene mantenuto
persistente dal browser sulla macchina dell'utente. Così il giorno dopo, due giorni dopo, ecc... è ancora lì e il sito lo riceve e ne può fare uso per "auto loggare" l'utente.
Il problema (grosso) è che il contenuto di questo cookie è estremamente "delicato" e deve essere opportunamente offuscato/criptato in modo da non rivelare nulla della utenza. Deve essere scelto e gestito molto accuratamente. E inoltre ci sono le (solite) questioni sulla sicurezza: che succede se qualcuno (con intenzioni malevole, chiaramente) riesce attraverso la rete (o nel PC) a carpire quel cookie? Avrebbe pieno accesso al sito con quella utenza!
Te lo dico subito: NON è "banale" farlo bene e in modo ragionevolmente serio/sicuro.
Salva ha scritto:
2) se l' utente non effettua il login dalla pagina index.html, quando proverà ad accedere alla pagina aggiungi.jsp, l' applicazione deve chiedergli di inserire username e password per autenticarsi.
Questo lo si fa "proteggendo" le risorse (la/e pagina/e) "ristrette" ai soli utenti loggati tramite le funzionalità offerte da eventuali framework e/o dall'application server.
In Java EE, a livello basilare/minimale, è possibile sfruttare la security "dichiarativa" che si può realizzare attraverso la configurazione nel web.xml. Si può indicare quali sono le risorse "protette", quali "ruoli" degli utenti possono accederci e altro.
In alternativa puoi implementare una
tua security "programmatica" come ti pare, chiaramente tramite del codice, magari sfruttando i Filter della API Servlet.
E a seconda dei framework utilizzati (es. Spring Framework) si possono usare altri meccanismi di security (es. Spring Security se si usa Spring Framework).
Senza sapere il contesto e le caratteristiche della tua applicazione, non saprei che altro dire. Cerca di documentarti, perché è un argomento abbastanza ampio e non banale.