我创建了一个使用LDAP进行身份验证的应用程序。我需要找出用户分配到的所有组名。有没有办法找出答案。我已经编写了代码但不知何故它只返回一个随机的组名。
以下是我的代码,以获取用户的所有成员。
dbadmin=> CREATE TABLE tbl (a int PRIMARY KEY);
CREATE TABLE
dbadmin=> COPY tbl FROM STDIN NO COMMIT;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 1
>> 2
>> 2
>> 3
>> \.
dbadmin=> SELECT * FROM tbl;
a
---
1
2
2
3
(4 rows)
dbadmin=> SELECT ANALYZE_CONSTRAINTS('tbl');
Schema Name | Table Name | Column Names | Constraint Name | Constraint Type | Column Values
-------------+------------+--------------+-----------------+-----------------+---------------
public | tbl | a | C_PRIMARY | PRIMARY | ('2')
(1 row)
dbadmin=> DELETE FROM tbl WHERE a = 2;
OUTPUT
--------
2
(1 row)
dbadmin=> COMMIT;
COMMIT
dbadmin=> SELECT * FROM tbl;
a
---
1
3
(2 rows)
该类用于为用户设置属性和返回属性。
先谢谢。
答案 0 :(得分:5)
这比我想象的容易得多。请在下面找到代码。在这里你只需要枚举for循环中的所有memberOf并在List中赋值int,然后返回List以及所有其他属性。
以下是代码。
private class UserAttributesMapper implements AttributesMapper {
@Override
public Object mapFromAttributes(Attributes attributes) throws NamingException {
LdapUser user = new LdapUser();
user.setCn((String)attributes.get("cn").get());
List<String> memberOf = new ArrayList<String>();
for(Enumeration vals = attributes.get("memberOf").getAll(); vals.hasMoreElements();){
memberOf.add((String)vals.nextElement());
}
user.setMemberOf(memberOf);
user.setsAMAccountName((String)attributes.get("sAMAccountName").get());
user.setMail((String)attributes.get("mail").get());
return user;
}
}