2017-04-12 14 views
-1

問題が発生しました。SpringブートによるRest ApplicationとSpringセキュリティによるURLの安全なアクセスがあります。RESTでSpringブートを使用して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; 
} 

とばねデータJPA WebSecurityConfigurerAdapterを拡張するクラスで

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(); 

}

からのデータベースのアクセスです。

しかし、このコードにユーザーと役割を含めるのではなく、一部のシステムでユーザーの固有のデータベースを使用しているため、基本データから取得します。

私の問題は、Springブートでアプリケーションを起動したときにのみ動作し、データベースからの構成であってもユーザーがロールを更新しても、起動後にSpringブートが更新されないということです。

誰かが既にこのシナリオでSpring Bootを使用しているかどうか、もしこれが可能なら、私は知っています。

研究では、Rest ControllerによってBeanのInMemoryUserDetailsManagerを更新するいくつかの実装を見つけました。この場合は、役割を更新するためにInMemoryUserDetailsManagerのRest ControllerにPUTを実装する必要がありますか?

ありがとうございます!

+0

メモリユーザーデータではなくデータベースを使用することを検討しましたか?データベースを使用してユーザーと役割を格納する場合は、既存のユーザーの新しい役割を更新して保存する方が簡単です –

+0

こんにちは、返信いただきありがとうございます。これが問題です。私がデータベースに変更を加えたら、Spring Bootは自分の役割を更新しません。 –

+0

データベースからのデータへのアクセス方法のコードを共有できますか。チャーチの技術を使用していますか? – Alekhya

答えて

0

最初の実装は、正しかった私は、ブラウザ上でテストし、常にセッション中にユーザーとパスワードを挿入して、私のミス、ごめんみんな!

0

あなたは春ブーツと、ブラウザがあなたのビューを更新しません使用している場合、あなたはapplication.properties構成ファイルに次の2行を追加する必要があります:あなたがここに読んさらに取ることができます

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を使用した私の春の起動は、起動アプリケーションの同じ役割を維持し、データベースの役割を変更すると更新されません。 –

関連する問題