关于Web应用登录状态的那些事

以前做Web应用的时候从来没有仔细研究过登录以及会话的状态等,今天就碰到了问题,一个是如何在浏览器不关闭的情况下保存用户的登录状态,关闭后登录即失效。

首先考虑的是使用session,当然这个肯定是毋庸置疑的了,但是问题出现了:

1、我调用HttpSession中的isNew()方法发现有些浏览器可以得到正确的值,就是首次打开浏览器并请求我的应用返回true,但有的浏览器返回false,真心纠结,最后没办法只能采用在session中保存其他值的方式解决该问题,例如:session.setAttribute(WebConst.USER_NAME,user.getUserName()); 然后通过判断该session中的值是否存在来解决问题,null表示打开浏览器第一次访问

2、保存用户对象,我首先采用的是使用缓存,不过后来发现使用缓存不够严谨而且容易出问题,后来想到了线程安全的ThreadLocal,然后在每次请求的拦截器中将用户set到该对象中,要使用的时候在get出来,问题解决。


后来想到记住用户登录状态,有一周、一个月、一年,这个的实现就比较好弄了,使用Cookie解决问题,首先将用户的登录名密码都放在Cookie中(response.addCookie(cookie))需要注意的是Cookie的Path一定要设定准确,时间单位是秒,到期时间大于0的数为过期需要多少秒,等于0表示删除该Cookie,小于0表示时间无限大,一般使用-1。然后获取界面是的复选框是否选中,选中在Cookie中保存1或者其他标记值,然后在请求的拦截器中获取该值,若是保存登录状态的值(我们这里应该是1)就从Cookie中获取用户的登录名和密码然后自动登录。

到此实现了记住登陆功能,其中需要注意的是密码最好加密,增加安全性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值