我的AEM世界中有一些代碼可以對a rest調用restlet服務。我想知道的是代碼是獲取當前登錄的UserId?該頁面的session = false。AEM - 獲取當前用戶Id
AEM有一個cookie可以抵抗嗎? 在表單中我有一個名爲cq_csrf_token的隱藏字段,但我沒有看到它與來自CRXDE的任何內容匹配。
如果你知道這將是很酷,聽到你的意見。
我的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