session 存储的内容未实现序列化接口 在redis作为sessioni存储时bug

楼主
我是社区第93017位番薯,欢迎点我头像关注我哦~
在进行sping boot集成时候,session的管理帆软是运用的内置的,由于本系统是通过redis来管理session的,redis会有序列化和反序列化的操作,所以保存在session中的信息必须要实现系列和接口,在我项目实施过程中,发现对单元格添加超链接的地方会有一次session信息的获取,但是这个类没有实现序列化接口,导致系统有误。

具体代码如下:需要序列化的类 NoCheckHyperLinkSessionAttribute CompareUserNameAndHyperlink
protected PrivilegeVote isHyperLinkNoCheck(HttpServletRequest paramHttpServletRequest, FSAuthentication paramFSAuthentication)
  {
    String str1 = NetworkHelper.getHTTPRequestParameter(paramHttpServletRequest, "reportlet");
    if (str1 == null)
      str1 = NetworkHelper.getHTTPRequestParameter(paramHttpServletRequest, "formlet");
    HttpSession localHttpSession = paramHttpServletRequest.getSession(true);
//从session中获取超链接的验证信息  NoCheckHyperLinkSessionAttribute 类和其内部类CompareUserNameAndHyperlink 都未实现Serializable接口,忘在后续的版本中检查session存储所涉及到的对象是否都实现了序列化接口
    NoCheckHyperLinkSessionAttribute localNoCheckHyperLinkSessionAttribute = (NoCheckHyperLinkSessionAttribute)localHttpSession.getAttribute("fr_nocheck_hyperlinkinfo");
    if ((localNoCheckHyperLinkSessionAttribute != null) && (localNoCheckHyperLinkSessionAttribute.isOneOfTheHyperlinks(str1)))
    {
      String str2 = (String)localHttpSession.getAttribute("fr_username");
      String str3 = NetworkHelper.getHTTPRequestParameter(paramHttpServletRequest, "op");
      long l = localNoCheckHyperLinkSessionAttribute.checkAlive(str2, str3, str1);
      if (l > 0L)
      {
        if (System.currentTimeMillis() - l <= getTimeout())
          return PrivilegeVoteImpls.SUCCESS;
        return PrivilegeVoteImpls.MP_AUTH_TIMEOUT;
      }
    }
    if (paramFSAuthentication != null)
      return PrivilegeVoteImpls.MP_ROLE_ERROR;
    return PrivilegeVoteImpls.MP_AUTH_ERROR;
  }


分享扩散:

沙发
发表于 2017-9-20 10:41:06
您好,系统显示您是合作客户,可以直接联系技术支持QQ:800049425进行反馈(将本帖链接发给技术支持)。

若您因其他原因,不便/不想找我们技术QQ,请点击本楼层左下角或者“我也说一句”回复告知,我会代为提交,建议您点击一下头像下拉菜单的微信按钮进行论坛账号绑定,可以第一时间收到帖子回复提醒以及更多精彩内容,谢谢!

如果您提交的bug有了处理结果欢迎回复此帖说明一下,可以获得奖励100F豆。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表