Spring Security: Set GrantedAuthorities Spring Security: Set GrantedAuthorities spring spring

Spring Security: Set GrantedAuthorities


you can do it with following code:

Collection<SimpleGrantedAuthority> oldAuthorities = (Collection<SimpleGrantedAuthority>)SecurityContextHolder.getContext().getAuthentication().getAuthorities();SimpleGrantedAuthority authority = new SimpleGrantedAuthority("ROLE_ANOTHER");List<SimpleGrantedAuthority> updatedAuthorities = new ArrayList<SimpleGrantedAuthority>();updatedAuthorities.add(authority);updatedAuthorities.addAll(oldAuthorities);SecurityContextHolder.getContext().setAuthentication(        new UsernamePasswordAuthenticationToken(                SecurityContextHolder.getContext().getAuthentication().getPrincipal(),                SecurityContextHolder.getContext().getAuthentication().getCredentials(),                updatedAuthorities));


The UserDetails.getAuthorities() method just returns a Collection<GrantedAuthority> object. You can use the appropriate Collection method to add your new authority to that collection.

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();if (principal instanceof UserDetails) {    ((UserDetails) principal).getAuthorities().add(New GrantedAuthorityImpl("ROLE_FOO"));}

Selah.