我有一个扩展 AbstractUserStoreManager 的类。
我的问题目前与 getRoleListOfUser() 方法有关。此处返回的列表显示在 UI 的 Unassigned Role 列表中,而不是 Assigned Role 列表中。即该方法的行为似乎是返回所有可能的角色,而不是分配给用户的角色。
我需要用这个角色列表设置一个内部属性吗?这是一个已知的错误?
@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;
}
我的实现与现有示例不同,因为我使用的是 Web 服务调用,而不是使用 jdbc 直接查询用户存储。
但是,这似乎与此问题类似:ldap-user-store-not-working ,除了我使用自己的类而不是 LDAP。
任何建议,将不胜感激。