AEM - 获取当前的UserId

时间:2015-10-14 17:41:52

标签: session token aem

我的AEM世界中有一些代码可以执行对restlet服务的形式ajax调用。我想知道的是,当前登录UserId的代码是什么?该页面的session = false。

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

如果你知道听到你的意见会很酷。

4 个答案:

答案 0 :(得分:3)

您确定用户已登录吗? 您可以从Session对象中获取当前登录的用户:

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

另请参阅此Stackoverflow帖子:https://stackoverflow.com/a/22549922/1377893

答案 1 :(得分:2)

如果您想在java中获取用户,可以使用资源解析器API

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

如果您想让用户在前端,您可以使用个人资料数据管理器API

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

会为您提供有关当前登录用户的信息。

对于您的第二个问题,request.getCookies()会将所有Cookie作为Cookie []提供给您。 希望这有帮助

答案 2 :(得分:1)

如果没有用户登录,AEM会将用户视为“匿名”用户。

试试这个:

while answer < low or answer > high:
    try:
        answer = int(input(prompt))
    except ValueError:
        print('Invalid data type!')
    else:
        if answer < low or answer > high:
            print('Invalid!')

如果用户未登录,则应打印用户名..默认情况下,您将看到“匿名”作为用户。

答案 3 :(得分:0)

您可以通过将以下代码放入JSP中来查看用户ID。

<%@include file="/libs/foundation/global.jsp"%>
<%= resourceResolver.adaptTo(Session.class).getUserID() %>
BTW,CSRF令牌是为了保护站点免受跨站点请求伪造攻击。

有关详情,请参阅此页:https://docs.adobe.com/docs/en/aem/6-2/develop/security/csrf-protection.html