第五十二章 进程亲和性和状态感知模式(保留模式 1) - 启动状态感知模式

第五十二章 进程亲和性和状态感知模式(保留模式 1) - 启动状态感知模式

通过设置保留模式将会话标记为状态感知,如下所示:

java 复制代码
Set %session.Preserve = 1

建议在表单的 OnPreHTTP 方法中将会话标记为状态感知:

java 复制代码
<script language=objectscript method=OnPreHTTP arguments="" returntype=%Boolean>
Set %session.Preserve = 1
Quit 1
</script>

此处发出指令意味着 CSP 引擎可以在制定 HTTP 响应标头并将其分派到 Web 网关之前将会话 cookie(或令牌)标记为状态感知。

OnPreHTTP 方法触发后,会话可以标记为状态感知,但在这种情况下,会话 cookie/令牌已经制定。 CSP 引擎在响应页脚(在响应有效负载之后调度)中将保留 = 1 指令传递给 Web 网关,Web 网关将连接标记为私有并根据会话 ID 缓存该指令,以便它可以识别未修改的会话令牌当后续请求到达时作为状态感知。

如果在 OnPreHTTP 方法中将会话标记为状态感知,则 Web Gateway 无需缓存针对会话的转换,因为信息包含在有效驻留在客户端上的会话 cookie/令牌中。

维护状态感知模式并响应错误

一旦会话被标记为状态感知并且 Web Gateway 已确认状态转换并将连接标记为专用,会话将在状态感知模式下透明地运行,直到发生以下事件之一:

  • 应用程序转换回无状态操作模式。
  • 应用程序以编程方式结束会话或会话超时。
  • 由于某些错误情况,专用连接提前关闭。

如果托管状态感知应用程序的专用连接过早关闭(可能是由于错误情况),Web Gateway 会将请求路由到池中的空闲无状态连接,并返回 IRIS 错误号 5974

java 复制代码
CSP error occurred
Error: The persistent session is no longer available because the server process does not exist
ErrorNo: 5974
CSP Page: /csp/samples/loop.csp
Namespace: %SYS
Class: <Unknown>

此时,请求正在无状态模式下运行,应用程序有责任响应此错误:例如,将用户引导回应用程序的登录表单。

在状态感知模式下操作时,应在每个页面中检查 %session.NewSession 的值。或者,当用户首次被授权访问应用程序时,应用程序应检查存储在 %session.Data 中的用户特定身份验证数据的有效性。出于安全原因并确保用户会话仍然安全地锁定在状态感知操作模式中,这些检查非常重要。在这些情况下不会自动引发错误条件,因为会话可能已经(并且合法地)从状态感知模式转换出来。例如,考虑传入会话令牌仍标记为状态感知但应用程序已转换为无状态模式的情况 - 这种情况是由于会话令牌嵌入到所提供的表单(如 CSPCHD)中而出现的在进行转换之前。

最后请记住,当会话终止时(例如,超时后),CSP 引擎将删除与该会话关联的所有操作数据,此后对该会话的任何进一步传入请求都将被视为针对某个会话。新会议。

IRISWeb 应用程序提供的嵌入式安全机制可针对上述意外情况提供保护。在状态感知应用程序内发生连续性丢失的所有情况下,用户都会自动定向到登录表单(相对于 IRIS 流程)。

终止状态感知模式

应用程序可以通过设置保留模式来恢复到无状态操作模式,如下所示:

java 复制代码
Set %session.Preserve = 0

建议在表单的 OnPreHTTP 方法中执行此代码:

java 复制代码
<script language=objectscript method=OnPreHTTP arguments="" returntype=%Boolean>
    Set %session.Preserve = 0
    Quit 1
</script>

此处发出指令意味着 CSP 引擎可以在制定 HTTP 响应标头并将其分派到 Web 网关之前将会话 cookie(或令牌)标记为无状态。

会话可以立即终止,如下所示:

java 复制代码
Set %session.EndSession = 1

设置此属性后,会话将在处理当前请求后立即终止。

可以将会话设置为超时,如下所示:

java 复制代码
Set %session.AppTimeout = 900

会话在规定的不活动秒数后超时并终止。默认值为 900 秒(15 分钟)。

相关推荐
吕彬-前端8 分钟前
使用vite+react+ts+Ant Design开发后台管理项目(五)
前端·javascript·react.js
学前端的小朱11 分钟前
Redux的简介及其在React中的应用
前端·javascript·react.js·redux·store
许野平18 分钟前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono
guai_guai_guai20 分钟前
uniapp
前端·javascript·vue.js·uni-app
bysking1 小时前
【前端-组件】定义行分组的表格表单实现-bysking
前端·react.js
王哲晓2 小时前
第三十章 章节练习商品列表组件封装
前端·javascript·vue.js
fg_4112 小时前
无网络安装ionic和运行
前端·npm
理想不理想v2 小时前
‌Vue 3相比Vue 2的主要改进‌?
前端·javascript·vue.js·面试
酷酷的阿云2 小时前
不用ECharts!从0到1徒手撸一个Vue3柱状图
前端·javascript·vue.js
微信:137971205872 小时前
web端手机录音
前端