2011-04-21 92 views
3

如果我有一個網站,有一個受保護的後端,我正在尋找使用application.cfm文件,我怎麼能告訴哪些網頁使用應用程序filesa和哪些不。coldfusion application.cfm和受影響的文件

index.cfm 
update/application.cfm 
update/loginexpired.cfm 
update/login.cfm 
update/somesecurepage.cfm 
update/someothersecurepage.cfm 

我想要updates/login.cfm創建會話,如果登錄是正確的。 如果訪問安全頁面update/somesecurepage.cfmupdate/someothersecurepage.cfm時沒有正確登錄,應用程序應轉發到update/loginexpired.cfm,但我不希望其他任何頁面使用application.cfm

這是否合理?還是應該用cfinclude代替?

回答

4
  1. 務必確保使用大寫字母「A」來命名Application.cfm和Application.cfc文件。通過這種方式,如果您從Windows遷移到區分大小寫的文件系統,則不會遇到ColdFusion找不到您的Application.cfm/cfc文件的問題。

  2. 就您的問題而言,使用您當前的結構,「update」文件夾中的所有文件都將使用Application.cfm文件。它將在這些文件中的任何其他代碼之前執行。如果您只希望某些頁面重定向到loginexpired頁面,那麼我通常會創建一個子文件夾,將Application.cfm文件放在包含來自父文件夾的Application.cfm文件的文件夾中:<cfinclude template="../Application.cfm" />。然後在這個文件中,你會添加你的安全檢查。在父Application.cfm文件中,您將包含<cfapplication />標記。如果您使用會話,請確保在您的cfapplication標籤中啓用會話管理。 (<cfapplication name="myappname" sessionmanagement="true" />

  3. 你真的應該在你的網站的根目錄下有一個Application.cfm或Applciation.cfc文件。如果你不這樣做,那麼應用程序將運行時沒有應用程序範圍。 ColdFusion有一種「未命名」的應用程序,它可以在沒有定義的應用程序名稱的情況下運行。您很可能會遇到不良影響。所有CF應用程序都應該有一個指定的應用程序,使用cfapplication標記或具有this.name集的Application.cfc文件。

  4. 如果您將此作爲新應用程序編寫,我建議您使用Application.cfc而不是Application.cfm。您將可以訪問應用程序,會話和請求生命週期(onApplicationStart/End,onSessionStart/End,onRequestStart/End)以及onError和onMissingTemplate事件處理程序,從而更好地控制應用程序的流程。

+0

我該如何防止使用.cfm擴展名重定向的靜態html頁面?或者應用程序沒有重定向功能? – Daniel 2011-04-21 22:03:50

+0

具有Application.cfm文件的文件夾中的任何cfm頁面都將使用該代碼。如果您不希望它運行,您可以決定查看請求的頁面,並查看它是否在「不運行」列表中並有條件地執行重定向代碼。我建議你花更多的時間把你的頁面組織到更好的目錄結構中,然後使用Application.cfm文件(使用cfinclude來引入父Application.cfm文件),以便爲正確的頁面執行正確的代碼。您可以使用Application.cfc執行相同的操作,但不是使用cfinclude,而是擴展父級。 – 2011-04-21 22:08:10

0

我建議您爲公共區域和安全區域製作一個不同的Appliction.cfm(pref Application.cfc)。還要爲這些應用程序定義一個不同的名稱。

-1

哎呀,拼寫錯誤

我建議你做一個不同的Appliction.cfm(PREF的Application.cfc)爲了公共區域和安全區域。還爲這些應用程序定義一個不同的名稱。

+0

如果您有不同的應用程序名稱,您將擁有單獨的會話範圍。從公共區域確定登錄/退出狀態將會更加困難。我建議你在兩個區域使用相同的應用程序名稱並確保適當的區域。 – 2011-04-22 12:55:14

1

加載.cfm頁面時,它將首先在同一個文件夾中查找Application.cfc(現代推薦的Application對象)並運行它。如果該文件不存在,它將查找Application.cfm(實例化應用程序的舊方法)。

如果該文件夾中不存在,它將查找樹到下一個文件夾並檢查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