2015-10-14 85 views
1

我的AEM世界中有一些代碼可以對a rest調用restlet服務。我想知道的是代碼是獲取當前登錄的UserId?該頁面的session = false。AEM - 獲取當前用戶Id

AEM有一個cookie可以抵抗嗎? 在表單中我有一個名爲cq_csrf_token的隱藏字段,但我沒有看到它與來自CRXDE的任何內容匹配。

如果你知道這將是很酷,聽到你的意見。

+0

如果任何崗位幫你,請把它標記爲解決 – mish

回答

1

如果沒有用戶登錄,AEM會考慮用戶訪問內容爲「匿名「用戶。

試試這個:

import javax.jcr.Session; 
import org.apache.jackrabbit.api.security.user.Authorizable; 
import org.apache.jackrabbit.api.security.user.UserManager; 
... 
UserManager userManager = resourceResolver.adaptTo(UserManager.class); 
Session session = resourceResolver.adaptTo(Session.class); 
log.info("User="+session.getUserID()); 

or.. 

Authorizable auth = userManager.getAuthorizable(session.getUserID()); 
log.info("\n--- User, 
Principal="+auth.getID()+","+auth.getPrincipal().getName()); 

應打印的用戶名。通過默認,如果用戶沒有登錄,您會看到「匿名」的用戶。

2

如果你想在java中獲得用戶,你可以用戶資源解析器API

Session session = resourceResolver.adaptTo(Session.class); 
session.getUserID(); 

,如果你想獲得對前端用戶,你可以使用檔案數據管理器API

<script> 
CQ_Analytics.ProfileDataMgr.data 
</script> 

會給你關於當前登錄的用戶信息。

爲您的第二個問題,request.getCookies()會給你所有的Cookie作爲Cookie []。 希望這可以幫助