如果我的网站有受保护的后端,并且我希望使用application.cfm文件,我该如何判断哪些页面使用了应用程序文件,哪些页面没有。
index.cfm
update/application.cfm
update/loginexpired.cfm
update/login.cfm
update/somesecurepage.cfm
update/someothersecurepage.cfm
如果登录正确,我希望updates/login.cfm
创建会话。
如果在未正确登录的情况下访问安全页面update/somesecurepage.cfm
和update/someothersecurepage.cfm
,则应用程序应转发至update/loginexpired.cfm
,但我不希望任何其他页面使用application.cfm
。< / p>
这是合理的还是我应该使用cfinclude
?
答案 0 :(得分:4)
始终确保使用大写“A”命名Application.cfm和Application.cfc文件。这样,如果从Windows迁移到区分大小写的文件系统,则不会出现ColdFusion无法找到Application.cfm / cfc文件的问题。
就您的问题而言,使用您当前的结构,“update”文件夹中的所有文件都将使用Application.cfm文件。它将在这些文件中的任何其他代码之前执行。如果您只希望某些页面重定向到loginexpired页面,那么我通常会创建一个子文件夹,将Application.cfm文件放在该文件夹中,该文件夹包含父文件夹中的Application.cfm文件:<cfinclude template="../Application.cfm" />
。然后在此文件中,您将添加安全检查。在父Application.cfm文件中,您将包含<cfapplication />
标记。如果您正在使用会话,请确保在cfapplication标记中启用会话管理。 (<cfapplication name="myappname" sessionmanagement="true" />
)
您的网站根目录中应该有一个Application.cfm或Applciation.cfc文件。如果不这样做,应用程序将在没有应用程序范围的情况下运行。 ColdFusion有一种“未命名”的应用程序,它可以在没有定义应用程序名称的情况下运行。您很可能会遇到不受欢迎的影响。所有CF应用程序都应该有一个命名的应用程序,使用cfapplication标记或具有this.name设置的Application.cfc文件。
如果您将此作为新应用程序编写,我建议您使用Application.cfc而不是Application.cfm。您将可以访问应用程序,会话和请求生命周期(onApplicationStart / End,onSessionStart / End,onRequestStart / End)以及onError和onMissingTemplate事件处理程序,从而更好地控制应用程序流。
答案 1 :(得分:1)
当加载.cfm页面时,它将首先在同一文件夹中查找Application.cfc(现代推荐的Application对象)并运行它。如果该文件不存在,它将查找Application.cfm(实例化Application的旧方法。)
如果该文件夹中既不存在,它会将树查找到下一个文件夹并在那里检查Application.cfc,然后检查Application.cfm,它将重复此操作,直到找到一个或到达服务器的根目录。
因此,您在“update”文件夹中列出的所有文件都将自动使用application.cfm。只有root中列出的index.cfm才会出现。 (因为Application.cfc和Application.cfm都不在该文件夹中。)
因此,最好在每个人的网站根目录中使用Application.cfc,然后将锁定的页面放在具有更严格的Application.cfc的子文件夹中。
我希望直接回答你的问题。否则,我同意肖恩所说的话。
有关Application.cfc和Application.cfm的更多信息,请访问on Adobe's Coldfusion site。
答案 2 :(得分:0)
我建议您为公共区域和安全区域制作不同的Application.cfm(pref Application.cfc)。还为这些应用程序定义不同的名称。
答案 3 :(得分:-1)
糟糕,拼写错误
我建议您为公共区域和安全区域制作不同的Appliction.cfm(pref Application.cfc)。还为这些应用程序定义不同的名称。