Spring&SpringBoot拦截器使用相关问题

Spring&SpringBoot拦截器使用相关问题

  1. 拦截转发别用response.getWriter()的方式
    1. 原因 : 使用response.getWriter().println()response.getWriter().writer()方法向前端回写JavaScript片段进行拦截页面跳转的方式 . 当未登录且你请求的url被拦截成功并成功执行该方法后 , 你请求的的这个url就会被永久性的绑定该JavaScript片段 . 后续你登录后再请求该url , 不会被拦截器拦截,但是因为这个url已经被永久绑定了那个页面跳转的JavaScript片段 , 所以本次请求还是会跳转至JavaScript片段指定的路径 . 而你直接进行登录授权不被拦截器拦截的话就不会有这个场景复现.
      1. 解决 : 直接使用response.sendRedirect()方法进行重定向 , 如果觉得直接重定向至登录授权页面没提示信息不太好 , 可以重定向至一个中间提示的HTML页面 , 在这个页面提示后再重定向至登录授权页面
  2. 使用ehcache进行静态资源缓存时 , 别对.html , .jsp 等页面文件进行缓存
    1. 原因 : 如果使用了ehcache对页面文件进行缓存 , 在登录授权后访问过被拦截的一个页面文件后 , 后续就算注销了登录授权 , 再次访问该页面文件时 , 因为存在缓存 , 会直接返回缓存中的页面文件进行显示 , 而不会经过拦截器对其进行拦截 , 这样就会使得拦截器失去了意义
      1. 解决 : SimplePageCachingFilter的配置中 , addUrlPatterns方法别映射.html文件即可
  3. 浏览器如果网络栏中开启了缓存 , 在登录授权后访问过被拦截的一个页面文件后 , 后续注销了登录授权 , 再次访问该页面文件时 , 因为存在缓存 , 会直接返回缓存中的页面文件进行显示 , 而不会经过拦截器对其进行拦截 , 但该缓存存活时间极短 , 第二次请求同一个页面文件时就不会走缓存而是请求服务器进入拦截器
    1. 目前没有找到解决方法 , 但因其生存时间的特殊性 , 应该不会产生什么影响
posted @ 2021-11-11 18:15  Jancy丶  阅读(119)  评论(0编辑  收藏  举报