Я разрабатываю новое приложение и использую переменные сеанса для хранения некоторой информации о пользователях, такой как электронная почта, уровень разрешений и т. д. Мне интересно, как только пользователь решит обновить, скажем, электронную почту или разрешения для себя, это не повлияет сразу. Переменные сеанса будут обновлены, только если они выйдут из системы, а затем войдут снова. Я знаю, что один из способов избежать этого — обновить существующие переменные сеанса. Вот мой пример кода того, что я устанавливаю в переменных сеанса при входе пользователей в систему:
<cfset local.appStruct = structNew()>
<cfset structInsert(local.appStruct, "SysAdmin", checkUser.SystemAdmin, true)>
<cfset structInsert(local.appStruct, "UserName", checkUser.UserName, true)>
<cfset structInsert(local.appStruct, "AccountID", checkUser.AccountID, true)>
<cfset structInsert(local.appStruct, "Email", checkUser.Email, true)>
<cfset structInsert(local.appStruct, "TempPW", checkUser.TempPassword, true)>
<cfset structInsert(local.appStruct, "AccessType", permissionType, true)>
<cfset structInsert(local.appStruct, "AccessLevel", permissionLevel, true)>
<cfset structInsert(local.appStruct, "AccessList", permissionList, true)>
<cfset SESSION.AccountInfo = appStruct>
Выше я просто показал поля, которые сохраняются в области сеанса. Все значения взяты из запроса, который я не показывал. Например, TempPW
хранит временный пароль, и мне не нужно его обновлять, поскольку пользователь будет автоматически перемещен на страницу входа в систему после установки нового пароля. В других ситуациях, когда они обновляют email
или access type
, я не уверен, следует ли мне выйти из системы или попытаться обновить область сеанса? Есть ли какой-либо риск для безопасности, делая это так или иначе? Я просто пытаюсь реализовать лучшие практики в своем приложении. Спасибо.