2017-06-16 22 views
-1

私は唯一のユーザー名を知っている場合、春のセキュリティでは、ユーザーのすべての役割を取得することは可能ですか?私はこのような何かを考えています:どのようにして、Spring SecurityのユーザIDでユーザの役割をすべて取得できますか?

List<String> userRoles=veryCleverObject.getRolesByUsername("user123"); 

私は、現在のユーザーのためではなく、すべてのユーザーのためにこれを行う方法を知っています。私の回避策は、データベースからJpaRepositoryでクエリを実行することですが、これは明白な理由から適切な解決策ではありません。

私はユーザのリストを表示する私のアプリの簡単なユーザ管理モジュールでこれを必要とし、その役割を示したいと思います。

私はSpring Securityでどうすればいいですか?

+0

なぜISNユーザーロールを適切なソリューションにするためにデータベースにクエリを実行しないでください。私は、ユーザーがログインすると、自分のDB内で自分の役割を見つけるので、なぜ同じDBからそのページにユーザーの役割をリストアップしないのでしょうか? –

+0

もしJDBCの代わりにインスタンスのLdap認証を使用する必要があるなら、私はロールクエンジングロジックを書き直し/拡張する必要があります。 Spring Securityがインターフェースを使ってその仕事をして、ユーザーの役割を照会するならば、より良い解決策でしょう。 –

答えて

1

通常、認証はAuthenticationProvider、さらにはAuthenticationManagerで行われるため、ユーザー名とともにいくつかの資格情報が必要です。さらに、これらのデータは、一部のAuthenticationクラスのインスタンスにパックされている必要があります。通常、資格情報はなく、ユーザー名のみであり、一般的な方法でそのAuthenticationを構築する方法はわかりません。

しかし、あなたは唯一のあなただけの次のような方法があるUserDetailsServiceインスタンスことを使用することができますhttps://spring.io/guides/gs/authenticating-ldap/ JDBC認証http://www.mkyong.com/spring-security/spring-security-form-login-using-database/やLDAP認証などのUserDetailsServiceベースのメカニズム(使用している場合:

UserDetails loadUserByUsername(String username) throws UsernameNotFoundException; 

それは、そこから、ユーザ名によってUserDetailsを発見しますあなたは、ユーザーの役割(別名当局に付与された)を取得することができます。

UserDetailsServiceは、依存性注入を介して取得することができる。

関連する問題