Каков наилучший способ включить определенные функции jQuery для аутентифицированных / зарегистрированных пользователей на моей странице ColdFusion? - PullRequest
2 голосов
/ 17 августа 2010

У меня есть страница ColdFusion, в которую я хочу включить некоторые функции jQuery уровня администратора для аутентифицированных пользователей, но я не уверен, что для этого лучше всего подойти.В настоящее время у меня есть оператор cfif внутри моего document.ready, который проверяет, вошел ли пользователь в систему (область сеанса) и, если это так, запускает cfinclude для файла с дополнительным кодом.это самый безопасный способ сделать бизнес или есть лучший способ?

$(document).ready(function(){ 
<cfif #variable# IS "authenticated">
<cfinclude template="includes/theadminfunctions.js">
</cfif>
// a bunch of other code here...
});

Ответы [ 2 ]

2 голосов
/ 17 августа 2010

Я бы, наверное, по-другому обернул бы

<cfif variable IS "authenticated">
    <script src="includes/theadminfunctions.js.cfm"></script>
</cfif>
<script>
  $(document).ready(function(){
    //other code goes here
  });
</script>

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

Поэтому я бы добавил проверку подлинности на вашу страницу theadminfunctions.js, превратив ее в страницу .js.cfm. Таким образом, никто не сможет захватить ваши функции и включить их вручную без аутентификации. Также убедитесь, что вы заблокировали все API, которые вызывают функции js, чтобы требовать аутентифицированного пользователя.

1 голос
/ 17 августа 2010

Хорошо, во-первых, отметим, что cfif на самом деле не находится внутри вашей функции document.ready.Что касается сервера CF, то JS - это просто текст, ничем не отличающийся от HTML или чего-либо еще.

CFML запускается на сервере и генерирует текст (HTML / JS), который передается на веб-серверзатем через Интернет браузер пользователя интерпретирует текст как HTML + JS.

Некоторые функции CF могут стирать различия, скрывая часть вперед и назад, но важно знать, что на самом деле происходит: ваш CFML генерирует текст / код, но напрямую не взаимодействует с этим JavaScript.

Но в любом случае вернемся к основному вопросу ... как вы делаете это нормально, но не обязательно лучшим способом.JavaScript должен быть в отдельных файлах, чтобы их можно было кэшировать / обновлять по отдельности на странице.Кроме того, в зависимости от того, что может содержать ваш JS, вы можете заблокировать доступ к самому файлу.

Так как вы используете проверки входа на уровне CF, способ сделать это - использовать файл CFM дляВаш JS и добавьте проверку вверху файла.

Я бы, вероятно, сделал бы это так:

<script type="text/javascript" src="includes/common.js"></script>
<cfif (logincheck) >
    <script type="text/javascript" src="includes/loggedin.js.cfm"></script>
</cfif>

Тогда внутри loggedin.cfm вы получите:

<!--- Check again for authentication, and exit if not. --->
<cfif NOT (logincheck) >
    <cfabort/>
</cfif>

<!--- Tell the browser this is a JS file (default is HTML) --->
<cfcontent reset type="text/javascript"/>

// js admin functions...
$(document).ready(function(){...});

<!--- Ensure debugging is always off to prevent the JS errors it would otherwise cause. --->
<cfsetting showdebugoutput="false" />
<!--- (you can consider a <cfabort/> here, depending on if you want onRequestEnd to run or not) --->
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...