2010-02-13 13 views
5

Qual è il modo migliore (più sicuro) di implementare la gestione delle sessioni in un server web? Vorrei aggiungere questo, ma non so come implementarlo davvero. I cookie sono un "must" per la gestione delle sessioni? (Per essere in grado di identificare quale sessione)Implementazione di sessioni in un server Web java?

risposta

6

La gestione della sessione non è davvero la vostra preoccupazione. È gestito dalla classe HttpSession (leggi la descrizione in javadoc!), Che puoi ottenere chiamando request.getSession().

Funziona in due modi (non c'è bisogno che tu faccia nulla per sostenerli):

  • utilizzando un cookie di sessione (se i cookie sono consentiti)
  • usando url-rewriting - aggiungendo l'id di sessione (JSESSIONID) all'URL.

(Nota: in realtà è gestito dal servlet container (Tomcat, molo, ecc), che fornisce un'implementazione di HttpSession)

+0

+1. Basta prendere 'HttpSession' dalla richiesta e usare' get/setAttribute() 'per ottenere/impostare le cose nello scope della sessione. Questo è davvero tutto :) – BalusC

+0

In realtà non ha mai detto che sta lavorando in un ambiente di container servlet. Ho capito che sta scrivendo è proprio webserver. Potrebbe essere sbagliato però. – whiskeysierra

+0

@Willi allora la mia risposta è di nuovo utile, perché ho indicato le due opzioni che vengono utilizzate. Ma questo dovrebbe essere stato davvero chiarito. – Bozho

2

Supponendo che si sta parlando di un servlet container, quindi la gestione delle sessioni viene backed in. Vedere lo relevant part of if the JavaEE tutorial. Copre l'API di sessione, nonché il modo in cui vengono monitorate le sessioni (cookie o riscrittura degli URL).

1

La gestione delle sessioni viene gestita dal contenitore Web. Se vuoi sicurezza dagli sguardi indiscreti, usa https (applicato in web.xml).

Ciò che potrebbe interessarti anche è come l'utente si identifica nel contenitore web. Esistono diverse opzioni, in cui il più sicuro è che il client utilizza un browser Web con un certificato digitale. Questo è abbastanza noioso, ma molto sicuro :)