Galera,
Gostaria de verificar se alguém já efetuou este tipo de configuração, que seria atualizar as roles do spring security depois de ter iniciado o Spring Boot.
Para explicar melhor o processo, criei uma aplicação REST que precisa de segurança em suas URLs, via usuário e ROLES de acesso para cada uma, já tinha uma aplicação com estes direitos por usuário, e consigo carregar estas permissões direto do bando de dados com o código abaixo na classe que estende de WebSecurityConfigurerAdapter:
@Override
protected void configure(AuthenticationManagerBuilder auth) {
try {
montarPermissoesByUsuario(auth);
} catch (Exception e) {
e.printStackTrace();
}
}
public void montarPermissoesByUsuario(AuthenticationManagerBuilder auth) throws Exception {
Set<CsUsuario> usuarios = serviceUsuario.findUsuariosApp();
for (CsUsuario csUsuario : usuarios) {
auth.inMemoryAuthentication().withUser(csUsuario.getUsername()).password(csUsuario.getPassword())
.roles(this.montarRoles(csUsuario));
}
}
public String[] montarRoles(CsUsuario usuario) {
String[] roles = null;
for (CsGrupo grupo : usuario.getGrupos()) {
roles = grupo.getServicosApp().stream().map(CsServicoApp::getRegra).toArray(String[]::new);
}
return roles;
}
O problema é que depois de eu subir a aplicação com o Spring Boot, caso seja alterado alguma permissão no banco de dados ela não é atualizada, sendo necessário reiniciar o Spring Boot para recriar as permissões do banco de dados.
Obs: Para esta atualização do banco de dados, já utilizo uma outra aplicação web.
Agradeço desde já.
Abraços.