我们已经从WSO2 IS 5.0.0.SP1升级到WSO2IS 5.1.0,我们正在尝试修复会话过期。似乎用户已登录很长时间。
在登录屏幕上,我们默认选中了rememberMe(我们希望用户持续约14h = 840m)
我看到的是identity.xml中的多个超时参数:
<SessionDataPersist>
<Enable>true</Enable>
<Temporary>false</Temporary>
<SessionDataCleanUp>
<Enable>true</Enable>
<CleanUpTimeout>841</CleanUpTimeout>
<CleanUpPeriod>30</CleanUpPeriod>
</SessionDataCleanUp>
<OperationDataCleanUp>
<Enable>true</Enable>
<CleanUpPeriod>30</CleanUpPeriod>
</OperationDataCleanUp>
</SessionDataPersist>
</JDBCPersistenceManager>
...
<TimeConfig>
<SessionIdleTimeout>840</SessionIdleTimeout>
<RememberMeTimeout>840</RememberMeTimeout>
</TimeConfig>
...
<PersistanceCacheTimeout>900</PersistanceCacheTimeout>
<SessionIndexCacheTimeout>900</SessionIndexCacheTimeout>
但似乎用户即使在第二天(24小时)也已登录
现在检查数据库的会话超时,我们看到time_created甚至放在将来(3.5天)。
select session_id , session_type, time_created, operation, tenant_id from idn_auth_session_store where session_id='8d761e3d-c2c8-4a50-b58f-dc20822a0000'
8d761e3d-c2c8-4a50-b58f-dc20822a0000 | SAMLSSOSessionIndexCache | 1467171230156905138 | STORE | 0
似乎1467171230156905138是星期三,29六月2016 03:33:50 GMT
问题是 - 将time_created用作到期时间戳还是错误转换的地方?如果它被用作到期日期 - 它在哪里真正配置?
编辑:
我从代码中看到的值是什么(我们不能只使用简单的ms时间戳?):
currentStandardNano = currentStandardNano + (currentSystemNano - FrameworkServiceDataHolder.getInstance().getNanoTimeReference());
这有效地将时间戳移动到服务器正常运行时间的值。这有什么理由吗?
感谢您的任何见解