我们正在从CF9迁移到CF11,并且在调用自定义组件时遇到错误。所有示例都适用于CF9。
APIFacade.cfc
是我们几年前创建的自定义文件。基本上,它创建一个管理对象,登录并创建一个运行时对象。然后调用clearTrustedCache方法:
<cfset adminObj = createObject("component","cfide.adminapi.administrator")>
<cfset adminObj.login("ADMINPW")>
<cfset adminRuntime = createObject("component","cfide.adminapi.runtime")>
<cfset adminRuntime.clearTrustedCache(workingFileList)>
当我们为“file”调用APIFacade.clearTrustedCache方法时:
<cfinvoke component="clearcache.APIFacade"
method="clearTrustedCache"
returnvariable="clearCacheResults">
<cfinvokeargument name="file" value="FILEPATH">
</cfinvoke>
返回以下CF错误:
在runtime.cfc中发生错误:第854行来自 E:/ColdFusion11/cfusion/wwwroot/CFIDE/adminapi/clearTrustedCache/apifacade.cfc: 第46行
当我们为“目录”调用相同的方法时:
<cfinvoke component="clearcache.APIFacade" method="clearTrustedCache" returnvariable="clearCacheResults">
<cfinvokeargument name="directory" value="DIRECTORYPATH">
<cfinvokeargument name="recursedir" value="1">
</cfinvoke>
我们收到一个类型为
的cfcatch转储coldfusion.security.SecurityManager $ UnauthenticatedCredentialsException
这两个调用似乎都指向了身份验证问题,但我认为情况并非如此,因为我可以在apifacade.cfc中插入伪造的cfadmin密码,我看到错误“当前用户无权从AccessManager.cfc调用此方法“。有人知道可能影响APIFacade.cfc的CF11错误吗?
答案 0 :(得分:1)
从评论中推广以提高可见度
我发现了一个与您类似的问题,解决方案是在登录方法中包含用户名和密码。 See that solution here.
这样的事情:
<cfset adminObj.login("ADMINPW","ADMINUSERNAME")>
请注意,参数的顺序与您的预期相反。密码在用户名之前。
我认为这可能是因为Adobe使用较新版本的ColdFusion进行了安全性增强。