AEM - 获取当前用户Id
问题描述:
我的AEM世界中有一些代码可以对a rest调用restlet服务。我想知道的是代码是获取当前登录的UserId?该页面的session = false。AEM - 获取当前用户Id
AEM有一个cookie可以抵抗吗? 在表单中我有一个名为cq_csrf_token的隐藏字段,但我没有看到它与来自CRXDE的任何内容匹配。
如果你知道这将是很酷,听到你的意见。
答
确定用户登录? 您可以从一个Session对象获得当前登录的用户:
Session session = resourceResolver.adaptTo(Session.class);
session.getUserID();
答
如果没有用户登录,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
如果任何岗位帮你,请把它标记为解决 – mish