session 共享
来源:互联网 发布:中美打击网络犯罪 编辑:程序博客网 时间:2024/05/22 09:04
** * 远程Session * 存放在Memcached缓存服务器里的Session * @author lx * */public class CacheSessionProvider implements SessionProvider { @Autowired private MemCachedClient memCachedClient; private final String SESSIONID="sessionId"; //设置数据保存在memcached的保存时间 private final Integer expiry=30*60; /** * 将session的值通过sessionId值存入memcached中 */ public void setAttribute(HttpServletRequest request, String name, Serializable value,HttpServletResponse response) { // TODO Auto-generated method stub Map<String, Serializable> session=new HashMap<String, Serializable>(); session.put(name, value); String sessionId=getSessionId(request, response); memCachedClient.set(sessionId, session, expiry); }/** * 通过用户本地的sessionId值到服务器获取session * 从缓存服务器memcached中获取sessionId值对应的session */ public Serializable getAttribute(HttpServletRequest request, String name,HttpServletResponse response) { // TODO Auto-generated method stub String sessionId=getSessionId(request, response); Map<String, Serializable> session = (Map<String, Serializable>)memCachedClient.get(sessionId); //返回保存在session中的用户数据 if(session!=null){ return session.get(name); } return null; } /** * * 删除缓存服务器memcached中中key=sessionId,这样用户即使 * 通过本地的sessionID也获取不到用户的数据 */ public void logout(HttpServletRequest request,HttpServletResponse response) { // TODO Auto-generated method stub //用户本地cookie String sessionId=getSessionId(request, response); if(memCachedClient.keyExists(sessionId)){ memCachedClient.delete(sessionId); } }/** * 获取sessionId,如果用户没有sessionId,则为用户创建一个sessionId */ public String getSessionId(HttpServletRequest request,HttpServletResponse response) { //获取存储在cookie的sessionId Cookie[] cookies = request.getCookies(); if(cookies!=null && cookies.length>0){ for (Cookie cookie : cookies) { if(SESSIONID.equals(cookie.getName())){ return cookie.getValue(); } } } //如果没有sessionId,为用户创建一个 String sessionId=UUID.randomUUID().toString().replaceAll("-", ""); Cookie cookie=new Cookie(SESSIONID, sessionId); cookie.setMaxAge(-1);// 默认-1,代表关闭浏览器就销毁cookie cookie.setPath("/"); response.addCookie(cookie); return sessionId; }
阅读全文
0 0
- 共享Session
- session共享
- session共享
- session 共享
- session共享
- session共享
- session共享
- session共享
- session共享
- session共享
- Session共享
- session共享
- session共享
- session共享
- session共享
- session 共享
- session共享
- session 共享
- Socket通信——Linux下,TCP滑动窗口
- php-2
- leetcode.617.Merge Two Binary Trees
- AVAudioRecorder 录音
- Lecture4 A=LU
- session 共享
- Asynctask下载框架
- mysql安装
- XMLHttpRequest对象的属性和方法
- 关于java中的值传递与引用传递的见解
- 3、Node.js => 函数
- poj 1979 dfs
- UML类图
- Okhttp3源码浅析