ColdFusion: когда определять переменные сеанса? - PullRequest
2 голосов
/ 15 мая 2011

Когда пользователь запрашивает страницу, это когда сеанс запускается для этого пользователя?Из того, что я могу сказать, сессия запускается, как только вы делаете запрос страницы ...

Если это так, когда вы создаете переменные сессии?т.е. имя пользователя, пароль, настройки и т. д. ... в любое время?

Ответы [ 2 ]

5 голосов
/ 16 мая 2011

Основы настройки и использования переменных сеанса объяснены здесь .

Сеанс - это, по сути, логическая связь между клиентом и приложением, поэтому переменные сеанса доступны из первого запроса клиента к вашему приложению, и сеанс обычно сохраняется между запросами с использованием файлов cookie, которые однозначно идентифицируют сеанс, хотя это может быть также сделано путем передачи идентификаторов в URL. Стоит обратить внимание на настройки времени ожидания вашего сеанса, например, вы можете захотеть предоставить более короткий тайм-аут для ботов / сканеров, которые не устанавливают файлы cookie и, следовательно, будут инициировать новый сеанс для каждого запроса страницы ( подробности об этом ).

4 голосов
/ 17 мая 2011

Да, область сеанса для пользователя настраивается по первому запросу.Однако это зависит от ваших предпочтений относительно того, когда вы хотите установить различные флаги и значения.Вы, вероятно, не хотите помещать пароль в область действия сеанса.

Что мне нравится делать, так это помещать определенные пользователем значения в структуру пользователя.Поэтому при запуске запроса я проверил бы переменную и установил бы, если она не существует.Например ...

<cfif not structkeyexists(session, "user")>
    <cfset session.user = {
        authorized = false
        , admin = false
        , username = ''
        , accountid = ''
        <!--- etc --->
    } />
</cfif>

Когда пользователь входит в систему, вы можете заполнить соответствующие значения и установить session.user.authorized = true

Когда пользователь выходит из системы.При таком подходе вы можете просто удалить структуру пользователей.

<cfset structdelete(session, "user") />

Затем на следующей странице будет снова произведена проверка для структуры пользователя и создана, если она не существует.

...