我有一个用ColdFusion编写的网站,其中包含通常的交互式网页和通过CF调度器运行的一些任务。dir布局是
/
/app
/scheduledTasks我希望这些任务能够使用在/app内部的application.cfc中创建的所有相同的设置,所以我想将整个/scheduledTasks目录移动到/app中。问题是application.cfc使用cflogin机制和我自己的登录表单。CF调度程序仅允许您为HTTP基本身份验证提供用户名和密码。计划的任务永远不会超过这一点。我如何解决这个问题,或者有没有更好的方法开始?
我想知道如何在我的应用程序.cfc的OnRequestStart中查看一些CGI变量,比如用户代理、远程IP和/或URL参数中的一个魔术值,如果都有,就绕过安全性,因为我“知道”它在另一端是CF的调度程序。这不是很好的安全性,但它可能是可以接受的。
我还想在我的根目录中创建一个新的application.cfc,/app中的application.cfc继承自该根目录。我会将任务放在原来的位置,并在那里放一个新的application.cfc,它继承了根目录中的通用内容。但是,这增加了复杂性,在尝试从/scheduledTasks访问/app/cfcs中的CFCs时,我遇到了一些问题。
有没有人遇到过类似的问题并解决了它?
发布于 2009-11-05 02:42:09
将计划任务保留在它们自己的文件夹中,就像您当前将其放在站点的根目录之外一样。
在scheduletasks文件夹中创建一个application.cfc,该文件夹扩展应用目录中的一个,如下所示:
<cfcomponent extends="/.apps/application">重载onrequeststart方法并输入身份验证,如下所示:
<cffunction name="onRequestStart" returntype="void" access="public" output="false">
<cfargument name="targetPage" type="any" required="true">
<cfif not structkeyexists(url, "access") or not url.access eq application.ApplicationName>
<cflocation url="/" addtoken="false">
</cfif>
</cffunction>这是非常基本的安全性,但可以完成工作。根据您的喜好进行自定义。
发布于 2009-11-05 06:18:04
即刻,我将为计划的应用程序创建一个自定义角色。然后,在主应用程序中,当请求来自本地服务器时自动应用它。
发布于 2010-01-28 01:21:17
ColdFusion定时任务在CGI信息中传入某些数据,包括:
HTTP_USER_AGENT=CFSCHEDULE
现在HTTP_USER_AGENT是可伪造的,所以下一个问题是确定您需要如何安全地访问该文件夹。您是否只想让CF运行这些任务?或者您也想从外部运行它们?只有你的电脑?等。一旦确定了这一点,你就可以为它编写代码了,而且Rip747的解决方案是一个很好的解决方案,所以我不会再提其他的建议了!;)
https://stackoverflow.com/questions/1675085
复制相似问题