Esto es como llegar a la pregunta desde el otro lado, pero pensé en incluirla ya que realmente tuve que investigar en Internet para averiguarlo.
Hay muchas cosas sobre cómo verificar roles, pero no se dice mucho sobre lo que realmente está verificando cuando dice hasRole ("bla")
HasRole comprueba las autoridades otorgadas para el principal actualmente autenticado
Así que realmente cuando ves hasRole ("bla") realmente significa hasAuthority ("bla") .
En el caso que he visto, haces esto con una clase que implementa UserDetails que define un método llamado getAuthorities. En esto básicamente agregarás algunosnew SimpleGrantedAuthority("some name")
a una lista basada en cierta lógica. Los nombres en esta lista son las cosas verificadas por las declaraciones hasRole.
Supongo que en este contexto, el objeto UserDetails es el principal actualmente autenticado. Hay algo de magia que ocurre dentro y alrededor de los proveedores de autenticación y, más específicamente, el administrador de autenticación que hace que esto suceda.
SecurityContextHolderAwareRequestWrapper
instancia. Podrías mejorarlo explicando cómo obtenerlo y aclarando un poco más la respuesta en sí.