Dopo che un nuovo utente ha inviato un modulo "Nuovo account", desidero registrare manualmente quell'utente in modo che non debbano accedere alla pagina successiva.Come impostare manualmente un utente autenticato in Spring Security/SpringMVC
La normale pagina di accesso al modulo che attraversa l'interceptor di sicurezza funziona perfettamente.
Nel regolatore-conto-forma nuova Sto generando un UsernamePasswordAuthenticationToken e porla in SecurityContext manualmente:
SecurityContextHolder.getContext().setAuthentication(authentication);
Sulla stessa pagina dopo controllo che l'utente è collegato a:
SecurityContextHolder.getContext().getAuthentication().getAuthorities();
Questo restituisce le autorizzazioni impostate in precedenza nell'autenticazione. Tutto bene.
Ma quando lo stesso codice viene chiamato nella pagina successiva che carico, il token di autenticazione è solo UserAnonymous.
Non sono chiaro perché non ha mantenuto l'autenticazione impostata sulla richiesta precedente. qualche idea?
- Potrebbe avere a che fare con l'ID di sessione non impostato correttamente?
- C'è qualcosa che potrebbe sovrascrivere la mia autenticazione in qualche modo?
- Forse ho solo bisogno di un altro passaggio per salvare l'autenticazione?
- Oppure c'è qualcosa che devo fare per dichiarare l'autenticazione attraverso l'intera sessione piuttosto che una singola richiesta in qualche modo?
Solo cercando alcuni pensieri che potrebbero aiutarmi a vedere cosa sta succedendo qui.
Puoi seguire la mia risposta a http://stackoverflow.com/questions/4824395/spring-security-forward-directive-cant-forward-to-login-form/7972971#7972971 – AlexK
Lettori, fai attenzione alle risposte a questa domanda se ti dicono di fare: 'SecurityContextHolder.getContext().setAuthentication (autenticazione) '. Funziona, ed è comune, ma ci sono seri difetti di funzionalità che incontrerai se lo fai. Per maggiori informazioni, vedi la mia domanda, e la risposta: https://stackoverflow.com/questions/47233187/spring-security-manual-login-best-practice – goat