java时间hash值_java-如果在指定的时间内未访问其键,是否可以从HashMap中删除键和值...

这个问题已经在这里有了答案:            >            Java time-based map/cache with expiring keys [closed]                                    10个

我有一个要求,我需要确保没有用户可以进行多次登录

因此,为此,我将其登录系统集中化,一旦用户成功登录,我会将其存储在Authenticator类中,如下所示:

如下所示,并在用户单击注销后将其从HashMap中删除

public final class Authenticator {

private static Authenticator authenticator = null;

Map usersStorage = new HashMap();

private Authenticator() {}

public static Authenticator getInstance() {

if ( authenticator == null ) {

authenticator = new Authenticator();

}

return authenticator;

}

public Map getusersStorage() {

return usersStorage;

}

}

到目前为止,一切都很好.

我也有一些负面的情况要处理

>用户无需单击注销即可关闭浏览器(Ctrl W /浏览器十字标记按钮)

在这种情况下,如果空闲了15分钟,则可以从HashMap中删除键和值.

请分享您达到这个要求的想法.

解决方法:

基本上,您需要的是会话管理.当用户登录时,启动会话并在用户对您的网站执行任何操作时继续刷新会话.并且,如果用户在一定时间内不活动(会话超时),则从会话存储中删除该用户.

如果您对此会话管理不感兴趣,并且只想使用Map这样的技术,则可以使用任何Cache机制(例如:EhCache).它将完全满足您的要求.但是对于这种特定情况,我更喜欢会话管理.

标签:java

来源: https://codeday.me/bug/20191120/2042275.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值