欢迎光临
我们一直在努力

小程序:如何解决服务端重启后客户端sessionid不一致的问题?

又有人在小程序上购买“1499元+积分”飞天茅台酒中招!大家通过这里网页、页面购买茅台酒的时候,务必注意开发者、经营者是谁,不能通过“名称”顾名思义。#茅台实时行情#

又有人在小程序上购买“1499元+积分”飞天茅台酒中招!大家通过这里网页、页面购买茅台酒的时候,务必注意开发者、经营者是谁,不能通过“名称”顾名思义。#茅台实时行情#

又有人在小程序上购买“1499元+积分”飞天茅台酒中招!大家通过这里网页、页面购买茅台酒的时候,务必注意开发者、经营者是谁,不能通过“名称”顾名思义。#茅台实时行情#

问题描述:

用户在访问小程序,并且已经登录,此时客户端的sessionid由服务器已经分配,并且在服务器端已经创建了部分与该客户端(或者说该sessionid)相绑定的session值;

此时服务器重启,将清空所有session值,当客户端再次访问服务器时,会获取数据失败,或重新登录

主要场景:

1、服务器重启后,客户端权限丢失,需要重新登录

2、小程序获取手机号(或其它)失败等

解决方案:

1、让session值持久化,持久化内容有:sessionid,以及和该sessionid相绑定的所有session值

企业开发小程序有哪些价值

  在2017年诞生的微信小程序,如今发展的如火如荼,很多企业和商家都开发了小程序。这是为什么?企业开发小程序有哪些价值?下面不妨跟着上海数字商圈的产品经理一起来了解一下。   1、知名度:   对于企业和商家而言,小程序可以

企业开发小程序有哪些价值,商家小程序,

  • 1)、通过数据库
  • 2)、通过redis

2、写一个公用的判断方法,主要功能,判断当前sessionid与客户端传到后台的cookies值中的JSESSIONID是否一致,如果一致,不做处理

如果不致,根据客户端传的sessionid查询是否存在,如果存在,查询该sessionid绑定的所有值,并重新添加到session中;

代码如下:

@Controller@Validated@RequestMapping(value="/test")public class testController extends BaseController {	private String sessionId = null;	JedisUtil jedisUtil = JedisUtil.getInstance();	JedisUtil.Strings redisListsObj = jedisUtil.new Strings();	JedisUtil.Keys redisKeysObj = jedisUtil.new Keys();	@RequestMapping(value="/get_again_sessionid",method = RequestMethod.GET)	@ResponseBody	public Object get_again_sessionid(HttpServletRequest request,	HttpServletResponse response,HttpSession httpSession){		Map<String,Object> map = new HashMap<String,Object>();		PageData transmitObj = new PageData();		System.out.println("当前新的sessionid:::"+httpSession.getId());		sessionId=httpSession.getId();		if(request.getCookies() !=null){			for (Cookie c : request.getCookies()) {				System.out.println("原来老的sessionid:::"+c.getName().equals("JSESSIONID"));				if (c.getName().equals("JSESSIONID")) {					System.out.println("JSESSIONID=" + c.getValue());					if (!c.getValue().equals(sessionId)) {						System.out.println("重新ddddddddddddddddddddddd");						String JSESSIONID=redisListsObj.get("JSESSIONID_"+c.getValue()+"_session_key");						//redisKeysObj.exists("JSESSIONID_"+c.getValue()+"_session_key")						if(JSESSIONID!=null){							httpSession.setAttribute("session_key", JSESSIONID);							redisListsObj.setnx("JSESSIONID_"+httpSession.getId()+"_session_key", JSESSIONID);							redisKeysObj.del("JSESSIONID_"+c.getValue()+"_session_key");						}					}				}			}		}		 		map.put("sessionid", httpSession.getId());				System.out.println("当前sessionid:"+httpSession.getId());		return AppUtil.returnObject(transmitObj, map);	}}

小程序背后:巨头们各自为阵的四大移动新生态

文|刘旷 “如今小程序的DAU(日活跃用户数量)已经超过了3.3亿,到明年年底,小程序的DAU可能会超过4.5亿。”阿拉丁创始人兼CEO史文禄,近日在其主办的第三届全球小程序生态大会上如此表示。 史文禄还提到:“2019年至少有23家小程序单

小程序背后:巨头们各自为阵的四大移动新生态

赞(0) 打赏
未经允许不得转载:小程序营销网 » 小程序:如何解决服务端重启后客户端sessionid不一致的问题?
分享到: 更多 (0)

小程序营销网

联系我们立即定制