2011-12-12 7 views
6

In un'applicazione Web con Spring MVC e Spring Security.Spring Security: setUserPrincipal manualmente

C'è un modo per impostare manualmente UserPrincipal?

Ho bisogno di passare a un altro utente da una parte admin della mia webapplication. Nel mio controller, è possibile impostareUserPrincipal nella richiesta? Connettersi come se fossi qualcun altro.

così:. Request.setUserPrincipal() getName()

+0

Si consiglia di considerare l'utilizzo del filtro SwitchUser incorporato in Spring. Vedi la seconda risposta qui: http://stackoverflow.com/questions/2563220/how-to-change-granted-role-temporarily-to-achieve-view-the-site-as-someone-els o i relativi JavaDocs qui : http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/web/authentication/switchuser/SwitchUserFilter.html – BobG

risposta

4

Ho fatto cose di questo genere per accedere automaticamente persone dopo la registrazione. Sembra che avrebbe fatto proprio quello che state cercando:

Authentication authentication = new UsernamePasswordAuthenticationToken(
      userService.loadUserByUsername(u.getUserName()), null, 
      AuthorityUtils.createAuthorityList("ROLE_USER")); 
SecurityContextHolder.getContext().setAuthentication(authentication); 

sto afferrando il mio utente da un servizio. Questo deve implementare l'interfaccia org.springframework.security.core.userdetails.UserDetails.

Penso che questo dovrebbe darvi una buona idea di cosa deve fare. Ricordo che mi ci è voluto un po 'per metterlo insieme dai documenti.