我正在扩展使用Spring Webflow 2.4.1和Spring 4.1.8构建的应用程序(Jasig CAS)。我注意到当我走开一段时间然后回来时,流程将继续执行。它不会超时。
我认为在空闲超时之后,流会将用户带回到起始点,因为会话被破坏,流执行密钥将丢失,因此存储在HTTP会话中的变量也是如此。但是,显然事实并非如此。
有人可以帮我理解为什么流量没有超时?并且,在HTTP会话被销毁之后它是如何获得流执行密钥和流变量的?
这是我看到的日志。请注意,流程正在恢复并且流量变量已恢复,这可能是流量可以继续运行的原因。
2016-07-26 16:10:17,688 DEBUG [org.springframework.webflow.mvc.servlet.FlowHandlerMapping] - Mapping request with URI '/cas/login' to flow with id 'login'
2016-07-26 16:10:17,689 DEBUG [org.springframework.webflow.executor.FlowExecutorImpl] - Resuming flow execution with key 'c5317d47-5330-4189-971f-......(key omitted)
2016-07-26 16:10:17,710 DEBUG [org.springframework.webflow.definition.registry.FlowDefinitionRegistryImpl] - Getting FlowDefinition with id 'login'
2016-07-26 16:10:17,710 DEBUG [org.springframework.webflow.engine.impl.FlowExecutionImpl] - Resuming in org.springframework.webflow.mvc.servlet.MvcExternalContext@61b71149
2016-07-26 16:10:17,710 DEBUG [org.springframework.webflow.engine.Flow] - Restoring [FlowVariable@1a5e084e name = 'credential', valueFactory = [BeanFactoryVariableValueFactory@13734668 type = UsernamePasswordCredential]]
2016-07-26 16:10:17,711 DEBUG [org.springframework.webflow.engine.Flow] - Restoring [FlowVariable@4cae64b7 name = 'changePassword', valueFactory = [BeanFactoryVariableValueFactory@4d5651b5 type = ChangePasswordCredential]]
2016-07-26 16:10:17,711 DEBUG [org.springframework.webflow.engine.Flow] - Restoring [FlowVariable@fe3958d name = 'changeEmail', valueFactory = [BeanFactoryVariableValueFactory@266f6421 type = ChangeEmailAddress]]
2016-07-26 16:10:17,711 DEBUG [org.springframework.webflow.engine.Flow] - Restoring [FlowVariable@7c53be39 name = 'changeSecretQuestion', valueFactory = [BeanFactoryVariableValueFactory@5dedcff3 type = ChangeSecretQuestion]]
2016-07-26 16:10:17,712 DEBUG [org.springframework.webflow.mvc.view.AbstractMvcView] - Processing user event 'submit'
答案 0 :(得分:1)
您的Session实际上没有被销毁或者这个Jasig CAS做了非默认的事情,以使Flows在HTTP Session之外持续存在。 Spring Web Flow默认使用会话,并且在会话到期后将无法恢复。