关于Web应用登录状态的那些事
2014-06-16 14:31
239 查看
以前做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中获取用户的登录名和密码然后自动登录。
到此实现了记住登陆功能,其中需要注意的是密码最好加密,增加安全性。
首先考虑的是使用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中获取用户的登录名和密码然后自动登录。
到此实现了记住登陆功能,其中需要注意的是密码最好加密,增加安全性。
相关文章推荐
- JavaWeb应用如何实现保持登录状态
- 帮你理清 Web 应用的登录状态
- 一个基于flask的web应用诞生 记录用户账户登录状态(6)
- 理清 Web 应用的登录状态 | Web 应用开发实践
- 关于HttpWebRequest和HttpWebResponse的应用
- 关于企业应用系统web开发的特点
- 关于WEB下读取二代证的(idrocx.cab)应用
- SMS:关于 Web 服务应用的个案研究
- 关于如何在java的web应用获取服务器资源。
- 关于oracle10g登录em后出现“数据库状态当前不可用”解决方法
- 关于Web应用中的Cache一致性问题
- 关于WEB应用中乱码解决方法
- usb key,互联网网站Web登录,应用系统认证安全保障
- 关于JavaWeb应用中获取Spring的ApplicationContext
- WebContext获取用户登录状态显示隐藏控件
- 关于Web应用与c/s应用的一些想法
- 关于9080端口和80端口实现真正意义的WebServer+ApplicationServer结合应用
- 关于在Web应用中实现MDA+Component的几点想法
- 关于IEWebControls的安装及一些应用
- 同域名下多WEB应用的单点登录