Domanda

Sto cercando un metodo o di una corrente di API che consente di aggiungere i gettoni web app richieste.Forse entro la sessione ma non persistente.O se si mi potrebbe aiutare a delineare un metodo efficace per fare questo

E. g.

1. Richiesta GET => Servlet genera un token e stampa in vista

2. restituisce una vista con un token di nascosto

<input type="hidden" name="token" value="UA37jdjs9UDJS3">
<input type="submit" name="deleteEmail" value="Delete">

3. POST request => form viene inviato, e controlla se il token è lo stesso.

Alcune cose da notare che, Se ci sono richieste Ajax poi alcuni altri token avrebbe dovuto essere in vita per un certo numero di richieste.

Se l'utente decide di chiudere il browser, il token sarebbe dovuto morire quando la sessione è scaduto.

Se l'utente non riesce a completare la forma, va a fare qualcos'altro sul sito, tali token avrebbero dovuto essere eliminato come vanno utilizzati.

Ma qual è il modo migliore di attuare un sistema come questo,

Non Molla di Sicurezza 3 hanno un sistema che posso usare?

all'interno di Java,Grails,Spring MVC, Spring Security 3 e Sospensione di area

È stato utile?

Soluzione

Hai un Sincronizzatore Token Pattern" in Grails documentazione http://grails.org/doc/1.2.0/guide/single.html ?

Altri suggerimenti

Avere uno sguardo al HDIV progetto http://www.hdiv.org/.Fanno esattamente questo.Anche se non si utilizza il HDIV codice del progetto, quindi le informazioni che ci possono dare una opzione come farlo da soli.E ' stato un buon primer per me per imparare circa la gestione dei token per cose come CSRF e altri usi, come il doppio presentare controlli.

Il primo pensiero è stato che si potrebbe semplicemente utilizzare il già generato l'id di sessione.Ma se si sta cercando di fare un fork di stato vorrei suggerire di usare qualcosa come cuciture modello di conversazione

Perché non utilizza solo il session_id che il contenitore Web genera quando si chiama richiesta.getSession()?

Se si desidera creare il proprio "token" che si potrebbe desiderare di controllare i Cookie.Un Cookie è una coppia chiave-valore inviati come un'intestazione HTTP da un server web a un browser web e poi rimandati indietro invariato dal browser ogni volta che si accede a tale server.

Per creare un cookie in un Servlet è possibile utilizzare:

public void doGet ( HttpServletRequest request, HttpServletResponse response )
     throws ServletException, IOException {
  // Create a cookie
  Cookie c1 = new Cookie("yourdomain.token","the value");
  response.addCookie(c1);
 //build your response

}

Il cookie verrà automaticamente incluso nel prossimo richiesta http.Si può leggere di nuovo con:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie[] cookies = request.getCookies();
//build your response
}

Recentemente ho incontrato un caso d'uso per questo.

Se una vecchia finestra dell'applicazione è presente nel browser, e un login link è stato cliccato da un'altra finestra del browser, l'azione di login, la prima creata una nuova sessione, e quindi reindirizzati alla finestra dell'applicazione.Questo ha innescato la vecchia finestra onunload metodo di metodo, che ha portato a una richiesta di disconnessione del server di registrazione di un nuovo utente.

Fare affidamento su un javascript evento onunload per la registrazione sembra tipo di merda per me, ma questo non può essere cambiato, così abbiamo scelto di non fare come l'OP suggerito e aggiunto un token in ogni vista di rendering di verifica per ogni richiesta.Questo interrompe il onunload richiesta di disconnessione di terminare la nuova sessione.

Quanto al modo migliore, direi che questo è abbastanza semplice.Ad esempio è possibile utilizzare http://java.sun.com/j2se/1.5.0/docs/api/java/util/UUID.html per generare le chiavi univoche.Se si utilizza un componente a base di framework come Arazzo, JSF o Wicket ci potrebbe essere un di più alto livello, il modo di gestire questo.

Questo è simile al tuo caso d'uso?O state cercando di ottenere qualcosa di completamente diverso?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top