2
A
回答
1
可以在com.liferay.portal.security.ldap.PortalLDAPImporterImpl檢查Liferay的源代碼,這可能會給你關於如何做到這一點在Liferay中更好的主意。
或
你可以試試下面的代碼在你的自定義portlet,代碼是非常基本的(我已刪除,並只保留這樣就不能編譯這將是需要的基礎知識,但仍然很少修改它應該工作):
import javax.naming.CommunicationException;
import javax.naming.Context;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import com.liferay.portal.model.User;
public class MyProgramaticLDAP {
private static final Properties ENV_PROPS = new Properties();
static {
ENV_PROPS.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
ENV_PROPS.setProperty(Context.PROVIDER_URL, "ldap://url.to.my.com:389");
ENV_PROPS.setProperty(Context.SECURITY_PRINCIPAL, "uid=myuserid,ou=people,dc=myorg,dc=com");
ENV_PROPS.setProperty(Context.SECURITY_CREDENTIALS, "mypassword");
ENV_PROPS.setProperty("PROVIDER_PROTOCOL", "ldap"));
ENV_PROPS.setProperty("PROVIDER_PORT", "389");
ENV_PROPS.setProperty("PROVIDER_HOST", "192.168.5.234");
ENV_PROPS.setProperty("LDAP_BASE_URL", "ldap://url.to.my.com:389");
ENV_PROPS.setProperty("CONTEXT_NAME", "ou=people,dc=myorg,dc=com"));
}
public User getLdapUser(String userEmail) throws PortalException,
SystemException, WebServiceAuthenticationException {
DirContext ctx = null;
String userContext = StringPool.BLANK;
String userName = null;
NamingEnumeration results = null;
//liferay user
User user = new User(); //won't compile
try {
// context and specifying LDAP service provider parameters.
ctx = new InitialDirContext(ENV_PROPS);
userContext = "uid=" + userEmail + "," + ENV_PROPS.getProperty("CONTEXT_NAME");
results = ctx.list(ENV_PROPS.getProperty("CONTEXT_NAME"));
System.out.println("User context: " + userContext);
Attributes attrs = null;
while (results.hasMore()) {
NameClassPair ncp = (NameClassPair) results.next();
userName = ncp.getName();
// the attributes for the record retrieved, your attributes may differ based upon the LDAP you use
System.out.println("Fetching attributes");
attrs = ctx.getAttributes(userName + "," + ENV_PROPS.getProperty("CONTEXT_NAME"));
System.out.println("Attribute mail: " + attrs.get("mail").get());
System.out.println("Attribute sn: " + attrs.get("sn").get());
System.out.println("Attribute title: " + attrs.get("title").get());
System.out.println("Attribute mobile: " + attrs.get("mobile").get());
System.out.println("Attribute firstname: " + attrs.get("firstname").get());
user.setFirstName(attrs.get("firstname").get());
System.out.println("Attribute department: " + attrs.get("department").get());
}// while ends here
} catch (CommunicationException cex) {
cex.printStackTrace();
} catch (Exception exp) {
exp.printStacktrace();
} finally {
// close connection and other code
}
return user;
}
}
相關問題
- 1. Liferay 6.0.5 - 以編程方式在新頁面中設置權限
- 2. 如何從文件以編程方式導入用戶庫
- 3. 從Liferay 6.1中的LDAP導入用戶和用戶組
- 4. 從Liferay portal 6.2中的LDAP導入用戶和用戶組
- 5. 如何以編程方式使Liferay Portlet進入全屏模式
- 6. 如何以編程方式從Liferay定製portlet登錄
- 7. Liferay和將用戶導出到LDAP中
- 8. 如何以編程方式從.zip文件導入Eclipse項目?
- 9. liferay以編程方式登錄
- 10. 強制Liferay調用LDAP導入用戶/組
- 11. 以編程方式查詢LDAP權限
- 12. Android:以編程方式啓用導入的帳戶聯繫人
- 13. 如何在liferay中以編程方式分配網站並註冊用戶?
- 14. 如何以編程方式導入/導出SQL數據庫表
- 15. 如何以編程方式更新和刪除SQL中的LDAP用戶?
- 16. Liferay 6.0.5 serviceBuider工作嗎?
- 17. 以編程方式動態導入
- 18. 以編程方式批量導入LDIF
- 19. 自動從liferay導入/導入頁面的方式
- 20. 如何在Liferay中以編程方式確定css-class-wrapper?
- 21. 如何以編程方式在liferay 6.1中配置portlet?
- 22. 如何以編程方式在liferay中創建站點?
- 23. 如何以編程方式將用戶從Facebook中註銷?
- 24. 如何將主題從6.0.5升級到Liferay 7?
- 25. 如何忽略Liferay用戶從LDAP錯誤中刪除?
- 26. 如何在Magento中以編程方式導入Category Image?
- 27. 如何以編程方式導入Java類
- 28. 如何以編程方式刪除Groovy中的默認導入?
- 29. 如何以編程方式導入CRM組織?
- 30. 如何以編程方式將XML數據導入Excel文件?
非常感謝你Prakash – radhakrishna 2012-04-30 14:19:46