这一段代码片段是我现在多次见过的。
Session adminSession = slingRepository.loginAdministrative(null);
session = adminSession.impersonate (new SimpleCredentials("author",new char[0]));
adminSession.logout();
然后,使用session
对象进行进一步处理
现在,肯定会有一些使用管理会话的含义,但我不能确切地知道这些是什么。
所以,我的问题是
编辑:
我相信使用adminResourceResolver也有同样的含义。只是为了确定
resourceResolver
?答案 0 :(得分:1)
这很简单,你正在短路AEM的安全模型。这是非常糟糕的,因为您允许某些功能中的用户可能在更高的访问权限下运行。
实际上永远不应该使用管理员用户会话。它可以用于执行自动化系统功能,并且可能存在功能提供适当安全控制的情况,但是,更好的方法是在这些情况下使用具有一组访问权限的指定用户。
最佳实践答案。决不。
答案 1 :(得分:0)
通过上述代码段获取管理员会话是cq 5.6及其前身中最常用的反模式。
以这种方式获得的会话为您提供了对存储库的完全访问权限,您几乎可以做任何好的/ 错误。
要处理此操作,需要为每个服务获取6.0会话,并且需要为它们提供相对权限。
检查以下链接sling service authentication以获取更多理解。