session销毁方法是:
session.invalidate();
点击退出登录后就会执行,执行后session确实是销毁了
但是通过shiro的sessionDao.getActiveSessions().size()获取到的活跃session数量并没有-1
请问这是为什么呢?
session销毁方法是:
session.invalidate();
点击退出登录后就会执行,执行后session确实是销毁了
但是通过shiro的sessionDao.getActiveSessions().size()获取到的活跃session数量并没有-1
请问这是为什么呢?
Apache Shiro的sessionDao.getActiveSessions().size()方法返回的是当前活动的session数量。如果你在调用session.invalidate()后发现这个数量没有减少,可能是因为Shiro的Session管理器还没有来得及更新这个数量。
Shiro的Session管理器可能会在后台线程中定期清理无效的session,而不是立即清理。这意味着即使你调用了session.invalidate(),getActiveSessions().size()可能也不会立即减少。
你可以尝试等待一段时间后再检查getActiveSessions().size()的值,看看是否有所减少。如果还是没有减少,那么可能是Shiro的Session管理器的实现有问题,或者你的应用代码在某处重新创建了一个新的session。
你也可以尝试调用sessionDao.getActiveSessions()方法,然后遍历返回的session列表,检查每个session的状态,看看是否有被标记为无效但实际上还在列表中的session。