- 首页 > 生活百科 > >
Log4jUtil.CommonLog.error("pc生成二维码登录", e); } return "index"; }//判断二维码是否被扫描public void pool() { DataResultInfo result = null; System.out.println("检测[ " + uuid + " ]是否登录"); ScanPool pool = null; if(MapUtils.isNotEmpty(PoolCache.cacheMap)) pool = PoolCache.cacheMap.get(uuid); try { if (pool == null) { // 扫码超时,进线程休眠 result = DataResultInfo.getInstance().failure(); result.setSuccessFlag(CommonConstant.Zero); result.setExtension(CommonConstant.Zero, "该二维码已经失效,请重新获取"); Thread.sleep(10 * 1000L); } else { // 使用计时器, 固定时间后不再等待扫描结果--防止页面访问超时 new Thread(new ScanCounter(uuid, pool)).start(); boolean scanFlag = pool.getScanStatus(); //这里得到的ScanPool(时间靠前)和用户使用手机扫码后得到的不是一个,用户扫码后又重新更新了ScanPool对象,并重新放入了redis中,,所以这里要等待上面的计时器走完,才能获得最新的ScanPool if (scanFlag) { result = DataResultInfo.getSuccess(); // 根据uuid从redis中获取pool对象,得到对应的sessionId,返给页面,通过js存cookie中 JSONObject jsonObj = new JSONObject(); jsonObj.put("cname", CookieConstant.SESSION_KEY); jsonObj.put("cvalue", pool.getSession()); result.setData(jsonObj); } else { result = DataResultInfo.getInstance().failure(); result.setMessage("等待扫描"); } } } catch (Exception e) { e.printStackTrace(); } sendJsonMessage(result); }//手机扫码接口(以id和token作为用户身份登录) public String phoneScanLogin() { DataResultInfo result = null; ScanPool pool = null; if(MapUtils.isNotEmpty(PoolCache.cacheMap)) pool = PoolCache.cacheMap.get(uuid); try { if (pool == null) { result = DataResultInfo.getInstance().failure();
推荐阅读