Session AEM-获取当前用户ID
在我的AEM世界中,我有一些代码可以对restlet服务进行表单ajax调用。我想知道的是获取当前登录用户ID的代码是什么?该页的session=false AEM有一块饼干可以让我吃吗? 在表单中,我有一个名为cq_csrf_token的隐藏字段,但我没有看到它与CRXDE中的任何内容匹配Session AEM-获取当前用户ID,session,token,aem,Session,Token,Aem,在我的AEM世界中,我有一些代码可以对restlet服务进行表单ajax调用。我想知道的是获取当前登录用户ID的代码是什么?该页的session=false AEM有一块饼干可以让我吃吗? 在表单中,我有一个名为cq_csrf_token的隐藏字段,但我没有看到它与CRXDE中的任何内容匹配 如果你知道听到你的意见会很酷 您确定用户已登录吗? 您可以从会话对象获取当前登录的用户: Session session = resourceResolver.adaptTo(Session.class);
如果你知道听到你的意见会很酷 您确定用户已登录吗? 您可以从会话对象获取当前登录的用户:
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>
CQ_Analytics.ProfileDataMgr.data
将为您提供有关当前登录用户的信息
对于第二个问题,request.getCookies()
会将所有Cookie作为Cookie[]提供给您。
希望这对您有所帮助您可以通过将以下代码放入JSP中来查看用户id
<%@include file="/libs/foundation/global.jsp"%>
<%= resourceResolver.adaptTo(Session.class).getUserID() %>
顺便说一句,CSRF令牌用于保护站点免受跨站点请求伪造攻击
有关更多详细信息,请参阅本页:如果有任何帖子对您有所帮助,请将其标记为解决方案