Как я могу использовать / получить доступ к переменным SESSION в удаленном методе CFC ColdFusion? - PullRequest
3 голосов
/ 25 октября 2011

У меня есть несколько методов в CFC, которые доступны удаленно через JavaScript. Некоторые из этих методов используют переменные SESSION, чтобы определить, какую логику запустить и, следовательно, какие данные вернуть.

Например, допустим, я установил переменную SESSION при входе в систему с именем SESSION.IsMale.

В моем удаленном методе CFC я запускаю следующий код:

<cffunction name="getFavoriteColor" access="remote" returntype="String">
    <cfif SESSION.IsMale>
        <cfreturn "blue" />
    </cfif>

    <cfreturn "pink" />
</cffunction>

Теперь я не хочу получать прямой доступ к области SESSION в моем CFC. Итак, как я могу "получить доступ" к области SESSION при вызове этого метода с использованием AJAX.

Я не хочу хранить значения на странице как глобальные переменные JavaScript, поскольку это противоречит цели обеспечения их безопасности.

Ответы [ 2 ]

3 голосов
/ 25 октября 2011

Лучший ответ, который я могу предложить, - рассмотреть использование ColdSpring для создания удаленных прокси-серверов и создания перехватчиков AOP для проверки.

Это гораздо менее сложно, чем кажется.

Я освещаю это в своей презентации Securing Ajax здесь: http://www.12robots.com/index.cfm/2010/8/19/My-Presentations-slides-from-cfObjective-NCDevCon-and-CFUnited

И в ColdSpring есть еще кое-что об этомдокументация здесь: http://www.coldspringframework.org/index.cfm/go/documentation

1 голос
/ 26 октября 2011

Совет Джейсона всегда стоит выслушать, но если ColdSpring кажется слишком большим, вы можете подумать о создании собственного простого удаленного прокси-сервера: CFC под вашим корнем, предназначенный для ответа на удаленные вызовы ajax. Здесь вы пишете удаленные методы, которые затем будут взаимодействовать с другими CFC в вашей модели / услуге (или как бы вы их ни организовывали), используя их существующие API и передавая / возвращая значения из области сеанса по мере необходимости.

Эффект тот же: инкапсуляция сохраняется и контролируется доступ.

...