2017-04-12 43 views
-1

我面临一个问题,Spring安全性使用Spring Boot和安全访问URL。如何使用Spring Boot在REST中将用户角色更新为Spring Security

此配置是

@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; 
} 

和数据库的距离Spring数据JPA

public interface CsUsuarioRepository extends JpaRepository<CsUsuario, String>{ 

public CsUsuario findByUsername(@Param("username") String username); 

@Query(value = CsUsuarioQuery.USUARIO_APP, nativeQuery = true) 
public Set<CsUsuario> findUsuariosApp(); 

接入}

在延伸WebSecurityConfigurerAdapter的类。

但是,我没有在这个代码中包含用户和角色,而是从基础数据中获得,因为我正在为某些系统使用用户的唯一数据库。

我的问题是,只有当我在Spring Boot上启动我的应用程序时,配置才起作用,如果用户有任何角色更新,即使配置从数据库中建立,Spring Boot在启动后也不会更新。

我会知道是否有人已经在这种情况下使用Spring Boot,并且这是可能的。

在研究中,我发现一些实现来更新Rest Controller的Bean InMemoryUserDetailsManager,在这种情况下,我需要实现一个PUT到RestMemoryUserDetailsManager控制器来更新角色?

谢谢!

+0

您是否考虑过使用数据库而不是内存用户数据?如果您将使用数据库来存储您的用户和角色,那么为现有用户更新和保存新角色会更容易 –

+0

嗨,感谢您的回复,因此,我已经使用数据库来存储我的用户及其角色,并且这就是问题。一旦我的数据库发生了一些变化,Spring Boot不会更新我的角色。 –

+0

你可以分享你如何从数据库访问数据的代码,并且你是否使用任何chaching技术? – Alekhya

回答

0

先执行是正确的,我在测试上的浏览器,并始终在会话中插入用户名和密码,我的错,对不起你们!

0

如果你使用Spring引导和你的浏览器不更新您的看法,您需要将以下两行添加到您的application.properties配置文件:

spring.resources.chain.strategy.content.enabled=true 
spring.resources.chain.strategy.content.paths=/** 

可以采取进一步的阅读在这里:

http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/#boot-features-spring-mvc-static-content

+0

谢谢你的回复,但这不适合我。使用REST的我的spring引导保持与启动应用程序相同的角色,如果我在数据库上更改角色,则不更新。 –

相关问题