JavaWeb登录状态保持解决方案
2017-01-04 11:49
281 查看
现在需要用户的网站系统就需要登录和注册,用户登录后可以进行更多权限的操作,但是登录一次之后不能让用户每次都进行登录,需要将这个状态保存下来持久化.
Session是服务器端的会话保持载体,Cookie是浏览器端(客户端)的会话保持载体.
cookie中要存储可以识别出用户身份的信息,因为存储在浏览器端,不安全,所以不能存储敏感的信息。
这里可以设置key为“loginuser”,value为用户的id (user_id)
session存储在服务器端,可以保证安全,可以直接存储当前登录的User对象.
Session是服务器端的会话保持载体,Cookie是浏览器端(客户端)的会话保持载体.
登录流程:
用户登录-登录成功-会话保持-进行其他操作-退出会话保持:
cookie和session都是key-value类型的数据结构.cookie中要存储可以识别出用户身份的信息,因为存储在浏览器端,不安全,所以不能存储敏感的信息。
这里可以设置key为“loginuser”,value为用户的id (user_id)
// 新建cookie 客户浏览器端保存当前用户的id // key-value格式 key-loginuser value-当前用户的id Cookie cookie = new Cookie("loginuser", user.getUser_id() + ""); // 设置客户端cookie ((HttpServletResponse) response).addCookie(cookie);
session存储在服务器端,可以保证安全,可以直接存储当前登录的User对象.
// 设置session 服务器端保存登录用户信息 HttpSession session = ((HttpServletRequest) request) .getSession(true); // session是key-value格式 // 把user_id作为key,value是user对象 session.setAttribute(user.getUser_id() + "", user);
获取用户user_id
int user_id = Integer.parseInt(CookieUtils.getCookieFromCookies(((HttpServletRequest)req).getCookies(), "loginuser").getValue());
Cookie工具类 CookieUtils.java
package cn.edu.bzu.group12.orangenews.utils; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author pangPython * Cookie工具类 */ public class CookieUtils { //从cookie数组中获取指定key的cookie public static Cookie getCookieFromCookies(Cookie[] cookies,String target){ Cookie cookie = null; for (int i = 0; i < cookies.length; i++) { if(cookies[i].getName().equals(target)){ cookie = cookies[i]; } } return cookie; } //删除所有cookie public static void removeAllCookies(HttpServletRequest req,HttpServletResponse resp){ Cookie[] cookies = req.getCookies(); for(Cookie cookie: cookies){ cookie.setMaxAge(0); cookie.setPath("/"); resp.addCookie(cookie); } } //根据cookie名称移除cookie public static void removeCookieByName(String cookie_name,HttpServletRequest request,HttpServletResponse resp){ Cookie cookie = null; Cookie[] cookies = null; // 获取当前域名下的cookies,是一个数组 cookies = request.getCookies(); if( cookies != null ){ for (int i = 0; i < cookies.length; i++){ cookie = cookies[i]; if((cookie.getName()).compareTo(cookie_name) == 0 ){ cookie.setMaxAge(0); resp.addCookie(cookie); } } } } }
相关文章推荐
- JavaWeb应用如何实现保持登录状态
- 微信小程序 保持登录状态(自己服务端的session)的解决方案(java)
- Android WebView 与登录状态保持一致,建立SESSION会话
- Android Cookie共享到WebView避免再次登录(保持登录状态)
- java实现自动登录无验证码登录后台并保持会话状态持续监控固定页面信息。
- django web 登录状态保持 session
- Android用WebView获取sessionid保持登录状态
- shiro实现APP保持登录状态,以及web统一登录认证和权限管理,会话保持在web和APP之间。
- JAVA Spring web mvc 学习 之 7:拦截器(登录状态验证)
- Android Cookie共享到WebView避免再次登录(保持登录状态)
- Android Cookie共享到WebView避免再次登录(保持登录状态)
- Android Cookie共享到WebView避免再次登录(保持登录状态)
- jax-rs(Java API for RESTful Web Services) 实践教程 之四 —— @Context注入HttpServletRequest 使REST保持状态!
- Android WebView 与OkhttpClient登录状态保持一致,建立SESSION会话
- Java Web开发防止多用户重复登录的完美解决方案
- Android Cookie共享到WebView避免再次登录(保持登录状态)
- Android Cookie共享到WebView避免再次登录(保持登录状态)
- django web 项目 登录状态保持 cookie
- Java Web开发(JSP、Servlet)乱码的一揽子解决方案
- win2003保持上次登录状态