Application.cfc против Application.cfm, а также необходимость расширения Application.cfc
Я перехожу от ColdFusion 8 к ColdFusion 10.
В настоящее время в корневом каталоге Unix у меня есть только 1 Application.cfm, и в этом корневом каталоге у меня есть около 10 подкаталогов (предыдущие программисты делали это таким образом, и я испытываю много странных вещей).
Теперь, когда у меня есть возможность повторить это веб-приложение, я хочу сделать это правильно, но самая большая проблема для меня - правильно понять, как работать с Application.cfc в CF10.
Каждый из подкаталогов представляет собой веб-приложение. Например, есть веб-приложение для отслеживания аспирантов, веб-приложение. для отслеживания выпускников, веб-приложение. для форматирования адресов и т. д.
Пользователи для этих приложений из 10 различных учреждений. Все они входят в приложение одинаковым образом (из одного интерфейса), но затем мы разделяем их, используя session.usergoup
& session.username
знать, кто есть кто и кто может видеть, что это за вещи.
Все учреждения совместно используют одну и ту же базу данных, поэтому в настоящее время только область данных установлена на область приложения.
К сожалению, после прочтения многих публикаций Application.cfc на этом форуме я запутался еще больше, поэтому я надеюсь, что вы, ребята, не против помочь мне, чтобы мне было удобнее работать с Application.cfc в CF10.
Мое понимание таково:
На моем корневом каталоге я создам один основной Application.cfc. Мой Main Application.cfc будет обрабатывать только логин / аутентификацию пользователя.
Так что под этим корневым каталогом у меня будет 1 Application.cfc, loginform.cfm и loginaction.cfm
В loginaction.cfm это где я установил session.usergroup
а также session.username
после успешной аутентификации пользователя.
Так что в моем основном Application.cfc я должен установить следующее:
<cfset THIS.Name = "InstitutionMainApp" />
<cfset THIS.ApplicationTimeout = CreateTimeSpan(0,0,30,0) />
<cfset THIS.SessionManagement = true />
<cfset THIS.SetClientCookies = false />
под OnApplicationStart я сделаю:
<cfset application.dsn = "MyDB">
и под OnSessionStart я сделаю:
<cfset session.usergroup= "">
<cfset session.username= "">
Затем в каждом файле моей подпапки Application.cfc мне нужно назвать его по-разному. Для системы отслеживания выпускников у меня должно быть:
<cfset THIS.Name = "GraduateTrackingSystem" />
<cfset THIS.ApplicationTimeout = CreateTimeSpan(0,0,30,0) />
<cfset THIS.SessionManagement = true />
<cfset THIS.SetClientCookies = false />
под OnRequestStart, когда мне нужно зашифровать переменную url (пример формы), я могу установить:
<cfset request.mySecretKey = application.mySecretKey />
<cfset request.algorithm = "AES" />
<cfset request.encoding = "hex" />
Для системы отслеживания выпускников у меня должно быть:
<cfset THIS.Name = "AlumniTrackingSystem" />
<cfset THIS.ApplicationTimeout = CreateTimeSpan(0,0,30,0) />
<cfset THIS.SessionManagement = true />
<cfset THIS.SetClientCookies = false />
под OnRequestStart, когда мне нужно зашифровать переменную url (пример формы), я могу установить:
<cfset request.mySecretKey = application.mySecretKey />
<cfset request.algorithm = "AES" />
<cfset request.encoding = "hex" />
Для приложения Formating Address. Я должен установить:
<cfset THIS.Name = "AddressFormattingSystem" />
<cfset THIS.ApplicationTimeout = CreateTimeSpan(0,0,30,0) />
<cfset THIS.SessionManagement = true />
<cfset THIS.SetClientCookies = false />
под OnRequestStart, когда мне нужно зашифровать переменную url (пример формы), я могу установить:
<cfset request.mySecretKey = application.mySecretKey />
<cfset request.algorithm = "AES" />
<cfset request.encoding = "hex" />
Тогда с application.dsn
, session.usergroup
а также session.username
все установлено в
Main Application.cfc под корневым каталогом. Я могу свободно использовать эти переменные области действия в каждой подпапке приложения безопасно, потому что каждая подпапка application.cfc названа по-разному, так что мне не следует беспокоиться о перекрестных ссылках между группой пользователей и имя пользователя?
Пожалуйста, дайте мне знать, если мое понимание о том, как использовать Application.cfc, очень беспорядок.
1 ответ
Это длинный вопрос.
Я думаю, что это то, что вам нужно: http://corfield.org/blog/index.cfm/do/blog.entry/entry/Extending_Your_Root_Applicationcfc
Как только вы расширили свой application.cfc через некоторый прокси-сервер, чтобы обойти ограничение расширения, вы сможете сделать почти все, что было настроено в вашем существующем application.cfm.
обновление: как указал iKnowKungFoo в комментарии, если у вас другое имя приложения, т.е. this.name
Вы не можете поделиться Vars в Application
область, так как вы по существу разветвляете новое приложение, вы можете попробовать Server
простор для тех. Логика может использоваться совместно с унаследованными вами функциями, но обратите внимание на то, доступны ли переменные в вашем приложении.