第五十二章 进程亲和性和状态感知模式(保留模式 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 分钟)。

相关推荐
apollo_qwe10 分钟前
前端缓存深度解析:从基础到进阶的实现方式与实践指南
前端
学习CS的小白17 分钟前
跨域问题详解
vue.js·后端
周星星日记18 分钟前
vue中hash模式和history模式的区别
前端·面试
Light6018 分钟前
Vue 高阶优化术:v-bind 与 v-on 的实战妙用与思维跃迁
前端·低代码·vue3·v-bind·组件封装·v-on·ai辅助开发
周星星日记18 分钟前
5.为什么vue中使用query可以保留参数
前端·vue.js
lebornjose19 分钟前
javascript - webgl中绑定(bind)缓冲区的逻辑是什么?
前端·webgl
小菜鸡ps21 分钟前
纯个人大白话--flowable多实例加签与减签
后端·工作流引擎
+VX:Fegn089521 分钟前
计算机毕业设计|基于springboot + vue作业管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
瘦的可以下饭了23 分钟前
Day05- CSS 标准流、浮动、Flex布局
前端
前端无涯25 分钟前
React中setState后获取更新后值的完整解决方案
前端·react.js