cookie、session、token
2020-06-06 本文已影响0人
xiari1991
cookie
用在web页面,解决了状态保存的问题,最大支持4096字节数据存储
存储在客户端
后台获取cookie的两种方式
方式一:
(HttpServletRequest request){
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie cookie : cookies){
cookie.getName();
cookie.getValue();
}
}
方式二:
(@CookieValue("key") String sessionId )
后台修改response的cookie方法
(HttpServletResponse response){
response.addCookie(new Cookie("key", value));
}
session
是存储在服务器端的,解决的是状态保存的问题,数据保存在服务器,较cookie更安全
后台设置session的方式
HttpSession session = httpRequest.getSession(true);
session.setMaxInactiveInterval(900)//失效时间设置,单位是秒
session.setAttribute(Constants.SESSION_KEY_USER + userToken, user);
redisService.hmSet(Constants.SESSION_ID_KEY , userToken, session.getId());//保存到redis
后台获取redis中的session,并获取存储的数据
String sessionId = (String) redisService.hmGet(Constants.SESSION_ID_KEY, userToken);
String key = "spring:session:sessions:" + sessionId;
T_user user = (T_user) redisService.hmGet(key, hashKey);
session一般和cookie结合使用,cookie用来存储sessionId。
session的存储数据大小没有限制
session可以设置
token
是令牌,是根据用户的信息生成的一个签名字符串,服务器可以不保存,客户端保存,服务器做校验。