我有一个应用程序,我们想实现一些"实时"通过以特定频率命中端点来进行轮询。但是,此更新不需要刷新会话,因此会话可以在此轮询的最后一个操作中超时。
有没有办法排除某些路由更新用户的会话到期,但仍需要用户的会话进行身份验证?
答案 0 :(得分:0)
如果“reflreshing”请求带有jsessionid
令牌,则会话将自动刷新。因此,您必须只对端点进行未经身份验证(即无jsessionid
)个请求。
那么,如何将此请求与没有会话ID的现有用户相关联?
您可以向请求添加标头,包含足够的信息以标识服务器端的用户(例如,JWT标记)。 HttpFilter
可以保护端点并基于此令牌执行身份验证。
现在,还有另一个问题。
为了确定是否有可用于该特定用户的新数据,我假设端点必须查询用户的状态。如果该状态完全存储在用户的HttpSession
中,那么您就无法通过编程方式访问它,只能通过jsessionid
来刷新超时。
这里的解决方案是将用户的数据(或至少是与实时内容相关的数据)外部化到另一个存储系统(内存映射,Redis缓存,Oracle或MongoDB数据库...... )。
这确实需要做一些工作......