Java 应该实现服务器端超时吗?

Java 应该实现服务器端超时吗?,java,angularjs,session-timeout,Java,Angularjs,Session Timeout,我正在构建一个java+angularjs应用程序。我已经在客户端实现了会话超时,如果用户在30分钟内没有任何活动,它会向服务器发送一个请求,使会话令牌过期 超时是否也应在服务器端单独出现,即如果与服务器的连接在5小时或一天内未关闭,则会自动使服务器端的会话令牌过期,并通过发送401来注销用户 我想到的另一个例子是,如果我将API与其他应用程序分开使用,我的API是否应该永不超时?或者它应该有一个会话持续时间,因为我在服务器端管理会话令牌。I如何使用TTL在服务器中保留会话令牌(生存时间,如果在

我正在构建一个java+angularjs应用程序。我已经在客户端实现了会话超时,如果用户在30分钟内没有任何活动,它会向服务器发送一个请求,使会话令牌过期

超时是否也应在服务器端单独出现,即如果与服务器的连接在5小时或一天内未关闭,则会自动使服务器端的会话令牌过期,并通过发送401来注销用户


我想到的另一个例子是,如果我将API与其他应用程序分开使用,我的API是否应该永不超时?或者它应该有一个会话持续时间,因为我在服务器端管理会话令牌。

I如何使用
TTL
在服务器中保留会话令牌(生存时间,如果在某段时间内没有任何活动,基本上您的令牌将从数据存储中删除)是最好的方法。许多数据存储都有实现这一点的机制,当
TTL
过期时,它会自动删除会话令牌;对于这种情况,我建议使用
Redis
。需要在服务器端保持会话安全性


如果您为不同的应用程序提供API,那么使用相同的机制是有意义的。只要用户已登录到您的系统,并且已通过您的系统授予其他应用程序权限,您就可以登录到其他应用程序

服务器端负责会话超时。否则,恶意(或损坏的)客户端可能会给服务器造成问题(例如,在服务器上创建100000个会话,而不是对它们进行计时)。服务器端超时应该比客户端超时更激进。服务器是每个会话消耗多个资源的服务器。客户端只有一个会话。Redis有TTL,但没有滑动过期,因此您必须自己在服务器端或使用lua脚本在Redis上实现