目前APP调用java后端接口的开发屡见不鲜。然而Http协议是短连接,APP和java后端不可能在一个容器中运行,所以就造成了会话无法记录。
通过服务端生成token,服务端把token放入容器中,APP访问接口传入token到服务端验证是否过期,如果过期则用户超时,反之顺利调用。
案例
登录通过后调用此代码,把token返回给APP
1 String token = UUID.randomUUID().toString().replaceAll("-", ""); 2 if (resultVOAPP.isSuccess()) { 3 User user = (User) resultVOAPP.getObject(); 4 user.setToken(token);
5 cachedClient.add(token, Constant.LOGIN_VAILD, j); 6 }
APP每次调用需要登录的接口传入token,在spring拦截器中验证是否存在token
1 Boolean mark = false; 2 String token = pvs[i].substring(pvs[i].indexOf("=") + 1); 3 if (StringUtil.isEmpty(token)) { 4 mark = true; 5 } else { 6 String userVO = cachedClient.get(token); 7 if (StringUtil.isEmpty(userVO)) { 8 mark = true; 9 } 10 } 11 if (mark) { 12 ResultVOAPP resultVO = new ResultVOAPP(ResultCode.ERROR_NOAUTHORITY); 13 return resultVO; 14 }