AbstractUserStoreManager を拡張するクラスがあります。
私の問題は現在 getRoleListOfUser() メソッドにあります。ここで返されるリストは、UI の [割り当てられた役割] リストではなく、[割り当てられていない役割] リストに表示されます。つまり、メソッドは、ユーザーに割り当てられたロールではなく、考えられるすべてのロールを返すように動作しているように見えます。
このロール リストで設定する必要がある内部プロパティはありますか? これは既知のバグですか?
@Override
public String[] getRoleListOfUser(String userName)
throws UserStoreException {
// check whether roles exist in cache
try {
String[] names = getRoleListOfUserFromCache(this.tenantId, userName);
if (names != null) {
return names;
}
} catch (Exception e) {
// if not exist in cache, continue
}
List<String> roles = new ArrayList<String>();
// **code removed ** - but, roles is populated by a web service.
String [] roleList = (String[]) roles.toArray(new String[roles.size()]);
addToUserRolesCache(this.tenantId, userName, roleList);
// TODO: make roleList apply to assigned roles, rather than unassigned roles!
return roleList;
}
jdbc を使用してユーザー ストアに対して直接クエリを実行する代わりに、Web サービス呼び出しを使用しているため、私の実装は既存の例とは異なります。
ただし、これはldap-user-store-not-working という問題に似てい ますが、LDAP の代わりに独自のクラスを使用しています。
任意の提案をいただければ幸いです。