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.