AEM - 获取当前用户Id

问题描述:

我的AEM世界中有一些代码可以对a rest调用restlet服务。我想知道的是代码是获取当前登录的UserId?该页面的session = false。AEM - 获取当前用户Id

AEM有一个cookie可以抵抗吗? 在表单中我有一个名为cq_csrf_token的隐藏字段,但我没有看到它与来自CRXDE的任何内容匹配。

如果你知道这将是很酷,听到你的意见。

+0

如果任何岗位帮你,请把它标记为解决 – mish

确定用户登录? 您可以从一个Session对象获得当前登录的用户:

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

另见本#1邮编:https://stackoverflow.com/a/22549922/1377893

如果没有用户登录,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()); 

应打印的用户名。通过默认,如果用户没有登录,您会看到“匿名”的用户。

如果你想在java中获得用户,你可以用户资源解析器API

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

,如果你想获得对前端用户,你可以使用档案数据管理器API

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

会给你关于当前登录的用户信息。

为您的第二个问题,request.getCookies()会给你所有的Cookie作为Cookie []。 希望这可以帮助

通过将以下代码放入JSP中,您可以看到用户标识。

<%@include file="/libs/foundation/global.jsp"%> 
<%= resourceResolver.adaptTo(Session.class).getUserID() %> 

顺便说一句,CSRF令牌是保护网站免受跨站请求伪造攻击。

请参阅本页面了解详情:https://docs.adobe.com/docs/en/aem/6-2/develop/security/csrf-protection.html