coldfusion application.cfm и затронутые файлы - PullRequest
3 голосов
/ 22 апреля 2011

Если у меня есть сайт с защищенной серверной частью, и я хочу использовать файл application.cfm, как я могу определить, какие страницы используют файлы приложенияa, а какие нет.

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.

Это правдоподобно, или я должен использовать cfinclude вместо этого?

Ответы [ 4 ]

4 голосов
/ 22 апреля 2011
  1. Всегда проверяйте имена файлов Application.cfm и Application.cfc с большой буквы «A». Таким образом, если вы переходите с Windows на чувствительную к регистру файловую систему, у вас не будет проблемы, когда ColdFusion не сможет найти ваши файлы Application.cfm / cfc.

  2. Что касается вашего вопроса, то с вашей текущей структурой все файлы в папке "update" будут использовать файл Application.cfm. Он будет выполнен перед любым другим кодом в этих файлах. Если вы хотите, чтобы только некоторые страницы перенаправлялись на страницу с логином, то я обычно создавал бы подпапку, помещая файл 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 или файл Application.cfc с установленным this.name.

  4. Если вы пишете это как новое приложение, я бы предложил вам использовать Application.cfc вместо Application.cfm. У вас будет доступ к жизненным циклам приложения, сеанса и запроса (onApplicationStart / End, onSessionStart / End, onRequestStart / End), а также к обработчикам событий onError и onMissingTemplate, обеспечивающим больший контроль над потоком вашего приложения.

1 голос
/ 27 апреля 2011

Когда загружается страница .cfm, она сначала ищет Application.cfc (современный, рекомендуемый объект Application) в той же папке и запускает ее.Если этот файл отсутствует, он будет искать файл Application.cfm (старый способ создания приложения.)

Если в этой папке его нет, он найдет дерево в следующей папке и провериттам для Application.cfc, затем Application.cfm, он будет повторять это до тех пор, пока не найдет один или не попадет в корень сервера.

Поэтому ВСЕ файлы, перечисленные в папке «update», будут автоматическииспользуйте application.cfm.Только index.cfm, указанный в корне, не будет.(потому что ни Application.cfc, ни Application.cfm не находятся в этой папке.)

Поэтому было бы лучше использовать Application.cfc в корне вашего сайта для всех, а затем поместить заблокированные страницыв подпапке с более ограничительным Application.cfc.

Я надеюсь, что ответ на ваш вопрос напрямую.В остальном я согласен с тем, что сказал Шон.

Более подробная информация о Application.cfc и Application.cfm доступна на сайте Adobe Coldfusion .

0 голосов
/ 22 апреля 2011

Упс, орфографическая ошибка

Я предлагаю вам создать другой файл Appliction.cfm (pref Application.cfc) для публичной и безопасной зоны.Также определите другое имя для этих приложений.

0 голосов
/ 22 апреля 2011

Я предлагаю вам сделать другой Appliction.cfm (pref Application.cfc) для публичной и безопасной зоны. Также определите другое имя для этих приложений.

...