当前位置:   article > 正文

关于accessDeniedHandler与authenticationEntryPoint 全局异常处理问题

accessdeniedhandler

简单说就是:
authenticationEntryPoint 会在全局异常捕获前捕获异常;
accessDeniedHandler会在全局异常之后捕获

authenticationEntryPoint

在处理jwt问题中,这里我需要处理不同的异常,返回给前端不同的异常信息,所以我想直接抛出异常,让全局统一处理,并返回异常信息,而我们已经将这里的异常交给了spring security ,这时我们就需要改造以下代码

    @Autowired
    @Qualifier("handlerExceptionResolver")
    private HandlerExceptionResolver resolver;

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        //我们先拿到请求头中的token
        String token = request.getHeader("Authorization");
        if(StringUtils.isBlank(token)){
            //说明没有携带token 那么直接放行 之后的过滤器肯定会报错,那么就说明用户没有登录
            filterChain.doFilter(request,response);
            return;
        }
```try {
            Claims claims = JwtUtil.parseJWT(token);
            userid  = claims.getSubject();
        }catch (ExpiredJwtException e){
            resolver.resolveException(request, response, null, new RuntimeException("无效的会话,或者会话已过期,请重新登录。"));
            return;
        }catch (Exception e) {
//            e.printStackTrace();
            resolver.resolveException(request, response, null, new RuntimeException("用户会话异常,请重新登录,或联系管理员。"));
            return;
//            throw new RuntimeException("token无效");
        }
        
//这里直截取了部分重要代码....

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

这里直接使用resolver.resolveException将异常抛给了全局,就可以在全局中处理我们的数据了

accessDeniedHandler

而 我们可以直接在全局异常中进行异常处理

    @ResponseBody
    @ExceptionHandler(value = AccessDeniedException.class)
    public R handleAccessRE(AccessDeniedException e) {
        return R.error("当前用户权限不足!");
    }
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/68916
推荐阅读
  • java发布到如今,已经过去几十年,如今微服务、云原生逐渐成为了主流,java原本的很多优势不再重要,而启动慢,耗内存等的缺点也越来越被放大.java在新发布的很多相关技术中也做出了很多改变其中SpringBoot3结合GraalVM,可以... [详细]

  • 分享三种可用的方式,并简单介绍一下为什么不用`rebase`。_git合并commitgit合并commit在对代码进行开源时,我们往往并不希望代码开发过程中的提交记录被其他人看到,因为提交的过程中往往会涵盖一些敏感信息。因此会存在将仓库中... [详细]

  • squash:使用commit,将commit信息合入上一个commit。reword:使用commit,修改commit信息。fixup:使用commit,丢弃commit信息。按esc键,输入:wq保存退出。pick:使用commit。... [详细]

  • 一 理解vue的核心理念使用vue会让人感到身心愉悦,它同时具备angular和react的优点,轻量级,api简单,文档齐全,简单强大,麻雀虽小五脏俱全.倘若用一句话来概括vue,那么我首先想到的便是官方文档中的一句话:Vue.js(读音... [详细]

  • 最近一直在捣鼓阿里服务器,想着把自己写好的一些项目部署到服务器上供其他人访问,一路上踩了不少坑,也查了不少资料,最后解决了,写个博客记录下来,也为其他想要建站的同学提供一个指引。购买轻量服务器传送门:阿里如果是在校学生,可以直接拉到... [详细]

  • 本文介绍了在完成Node.js环境部署后,开始编写API接口的过程。以一个简单的例子为开始,使用express和nginx进行反向代理来访问node服务。tronweb搭建Node.js环境部署完成之后,我们即可开始写API接口了。我们先从... [详细]

  • 1.HEAD基础gitcheckout实际上是修改HEAD文件的内容,让其指向不同的branch。HEAD文件指向的branch就是当前branch.一般来讲,HEAD的内容是指向staging(暂存区)的master文件的。ref:ref... [详细]

  • 生命周期onXonMounted(()=>{console.log('123');})setup没有create和beforeCreated这两个声明周期,因为这两个做的事情可以在setup中做,而其他生命周期就是onX的i形式出现。自定义... [详细]

  • #yipack(易打包)>一个神奇的vue.js单页应用,项目开发脚手架##仓库[码云](https://gitee.com/banshiweichen/yipack-cli)[github](https://github.com/chen... [详细]

  • vue集成了React、Angular的优点,MVVM+Dom让我们来看看第一个vue程序Title</title... <a title="深入探究Vue_vue研究内容" href="/blog/article/detail/69769" target="_blank">[详细]</a></div><div style="clear: both;"></div></div><div class="article_click rice1" style="width: 140px;"><p class="operation-b-img operation-b-img-active"><i class="img-up txclick" attc="upclick" attn="0"></i><span class="num"> 赞</span></p><p class="operation-b-img operation-b-img-active"><i class="img-down txclick" attc="downclick" attn="0"></i><span class="num">踩</span></p></div></li><li><div class="NewTitle"><a title="article" class="cat" href="/blog/article/list/1" target="_blank">article<i></i></a><h2><a title="学习使用Bootstrap选项卡功能_data-toggle="tab" href="/blog/article/detail/69375" target="_blank">学习使用<em>Bootstrap</em><em>选项卡</em><em>功能</em>_<em>data</em>-<em>toggle</em>="<em>tab</em></a></h2></div><div class="NewsInfo"><div class="NewsDesc" style="width: 100%; ">学习使用<em>Bootstrap</em><em>选项卡</em><em>功能</em>前言基本用法胶囊式<em>选项卡</em>JS触发事件订阅JS源码前言<em>选项卡</em>Tabs是Web中一种非常常用的<em>功能</em>。用户点击对菜单项,能切换出对应的内容。本文将详细介绍<em>Bootstrap</em><em>选项卡</em>基本用法<em>Bootstrap</em>框架中... <a title="学习使用Bootstrap选项卡功能_data-toggle="tab" href="/blog/article/detail/69375" target="_blank">[详细]</a></div><div style="clear: both;"></div></div><div class="article_click rice1" style="width: 140px;"><p class="operation-b-img operation-b-img-active"><i class="img-up txclick" attc="upclick" attn="0"></i><span class="num"> 赞</span></p><p class="operation-b-img operation-b-img-active"><i class="img-down txclick" attc="downclick" attn="0"></i><span class="num">踩</span></p></div></li><li><div class="NewTitle"><a title="article" class="cat" href="/blog/article/list/1" target="_blank">article<i></i></a><h2><a title="基于微信小程序的学生宿舍管理系统设计与实现(源码+数据库+文档)" href="/blog/article/detail/68190" target="_blank">基于微信<em>小</em><em>程序</em>的<em>学生宿舍</em><em>管理系统</em><em>设计</em>与实现(源码+数据库+文档)</a></h2></div><div class="NewsInfo"><div class="NewsImg"><a title="基于微信小程序的学生宿舍管理系统设计与实现(源码+数据库+文档)" href="/blog/article/detail/68190" target="_blank"><img width="120" height="70" alt="基于微信小程序的学生宿舍管理系统设计与实现(源码+数据库+文档)" src="https://img-blog.csdnimg.cn/direct/a2ca82018d1b4490b37c68d2d5c5462e.png?x-oss-process=image/resize,m_fixed,h_300,image/format,png"></a></div><div class="NewsDesc" style="width: 100%; ">本文介绍了宿舍<em>管理系统</em><em>小</em><em>程序</em>的开发全过程。通过分析宿舍<em>管理系统</em><em>小</em><em>程序</em>管理的不足,创建了一个计算机管理宿舍<em>管理系统</em><em>小</em><em>程序</em>的方案。文章介绍了宿舍<em>管理系统</em><em>小</em><em>程序</em>的系统分析部分,包括可行性分析等,系统<em>设计</em>部分主要介绍了系统功能<em>设计</em>和数据库<em>设计</em>。本宿... <a title="基于微信小程序的学生宿舍管理系统设计与实现(源码+数据库+文档)" href="/blog/article/detail/68190" target="_blank">[详细]</a></div><div style="clear: both;"></div></div><div class="article_click rice1" style="width: 140px;"><p class="operation-b-img operation-b-img-active"><i class="img-up txclick" attc="upclick" attn="0"></i><span class="num"> 赞</span></p><p class="operation-b-img operation-b-img-active"><i class="img-down txclick" attc="downclick" attn="0"></i><span class="num">踩</span></p></div></li><li><div class="NewTitle"><a title="article" class="cat" href="/blog/article/list/1" target="_blank">article<i></i></a><h2><a title="SpringCloud Gateway整合Spring Security实现用户权限管理_springcloud gateway security" href="/blog/article/detail/68871" target="_blank"><em>Spring</em>Cloud <em>Gateway</em>整合<em>Spring</em> <em>Security</em>实现用户权限管理_<em>springcloud</em> <em>gateway</em> <em>security</em></a></h2></div><div class="NewsInfo"><div class="NewsDesc" style="width: 100%; ">一、<em>Spring</em>Cloud<em>Gateway</em>实现基本的服务转发、跨域处理等功能(默认实现了负载均衡)一、网关基本概念1、API网关介绍  API网关出现的原因是微服务架构的出现,不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服... <a title="SpringCloud Gateway整合Spring Security实现用户权限管理_springcloud gateway security" href="/blog/article/detail/68871" target="_blank">[详细]</a></div><div style="clear: both;"></div></div><div class="article_click rice1" style="width: 140px;"><p class="operation-b-img operation-b-img-active"><i class="img-up txclick" attc="upclick" attn="0"></i><span class="num"> 赞</span></p><p class="operation-b-img operation-b-img-active"><i class="img-down txclick" attc="downclick" attn="0"></i><span class="num">踩</span></p></div></li><li><div class="NewTitle"><a title="article" class="cat" href="/blog/article/list/1" target="_blank">article<i></i></a><h2><a title="【Python编程快速上手】【实践项目】利用openpyxl模块创建EXCEL空行插入程序_python excel插入空行" href="/blog/article/detail/69587" target="_blank">【<em>Python</em>编程快速上手】【实践项目】利用<em>openpyxl</em>模块创建<em>EXCEL</em><em>空行</em><em>插入</em>程序_<em>python</em> <em>excel</em><em>插入</em><em>空行</em></a></h2></div><div class="NewsInfo"><div class="NewsDesc" style="width: 100%; ">项目说明创建一个程序blankRowInserter.py,它接受两个整数和一个文件名字符串作为命令行参数。我们将第一个整数称为N,第二个整数称为M。程序应该从第N行开始,在电子表格中<em>插入</em>M个<em>空行</em>。例如,如果这样执行程序:<em>python</em>bla... <a title="【Python编程快速上手】【实践项目】利用openpyxl模块创建EXCEL空行插入程序_python excel插入空行" href="/blog/article/detail/69587" target="_blank">[详细]</a></div><div style="clear: both;"></div></div><div class="article_click rice1" style="width: 140px;"><p class="operation-b-img operation-b-img-active"><i class="img-up txclick" attc="upclick" attn="0"></i><span class="num"> 赞</span></p><p class="operation-b-img operation-b-img-active"><i class="img-down txclick" attc="downclick" attn="0"></i><span class="num">踩</span></p></div></li><li><div class="NewTitle"><a title="article" class="cat" href="/blog/article/list/1" target="_blank">article<i></i></a><h2><a title="sc start service 1063 1053 错误原因_[sc] startservice 失败 1053:" href="/blog/article/detail/69281" target="_blank"><em>sc</em> <em>start</em> <em>service</em> 1063 <em>1053</em> <em>错误</em>原因_[<em>sc</em>] <em>start</em><em>service</em> 失败 <em>1053</em>:</a></h2></div><div class="NewsInfo"><div class="NewsDesc" style="width: 100%; ">在进入点函数里面要完成ServiceMain的初始化,准确点说是初始化一个SERVICE_TABLE_ENTRY结构数组,这个结构记录了这个服务程序里面所包含的所有服务的名称和服务的进入点函数,下面是一个SERVICE_TABLE_ENTR... <a title="sc start service 1063 1053 错误原因_[sc] startservice 失败 1053:" href="/blog/article/detail/69281" target="_blank">[详细]</a></div><div style="clear: both;"></div></div><div class="article_click rice1" style="width: 140px;"><p class="operation-b-img operation-b-img-active"><i class="img-up txclick" attc="upclick" attn="0"></i><span class="num"> 赞</span></p><p class="operation-b-img operation-b-img-active"><i class="img-down txclick" attc="downclick" attn="0"></i><span class="num">踩</span></p></div></li><li><div class="NewTitle"><a title="article" class="cat" href="/blog/article/list/1" target="_blank">article<i></i></a><h2><a title="云存储系统架构及优势_本地网盘架构" href="/blog/article/detail/68105" target="_blank"><em>云</em><em>存储系统</em><em>架构</em>及优势_<em>本地网</em>盘<em>架构</em></a></h2></div><div class="NewsInfo"><div class="NewsImg"><a title="云存储系统架构及优势_本地网盘架构" href="/blog/article/detail/68105" target="_blank"><img width="120" height="70" alt="云存储系统架构及优势_本地网盘架构" src="https://csdnimg.cn/release/cmsfe/public/img/lazyLogo2.1882d7f4.png"></a></div><div class="NewsDesc" style="width: 100%; ">数据存储层是<em>云</em><em>存储系统</em>的基础,它将不同类型的存储设备连接起来,基于虚拟化技术对存储设备进行抽象,将所有存储空间集成到存储资源池中,实现从物理设备到逻辑视图的映射,同时实现对存储设备的集中管理、状态监控以及容量的动态扩展。(4)数据集中存储。... <a title="云存储系统架构及优势_本地网盘架构" href="/blog/article/detail/68105" target="_blank">[详细]</a></div><div style="clear: both;"></div></div><div class="article_click rice1" style="width: 140px;"><p class="operation-b-img operation-b-img-active"><i class="img-up txclick" attc="upclick" attn="0"></i><span class="num"> 赞</span></p><p class="operation-b-img operation-b-img-active"><i class="img-down txclick" attc="downclick" attn="0"></i><span class="num">踩</span></p></div></li><li><div class="NewTitle"><a title="article" class="cat" href="/blog/article/list/1" target="_blank">article<i></i></a><h2><a title="ELK日志集成(filebeat+kafka+logstash+elasticsearch+kibana)_filebeat elasticsearch kafka logstash kibana" href="/blog/article/detail/68098" target="_blank">ELK<em>日志</em>集成(<em>filebeat</em>+<em>kafka</em>+<em>logstash</em>+<em>elasticsearch</em>+<em>kibana</em>)_<em>filebeat</em> <em>elasticsearch</em> <em>kafka</em> <em>logstash</em> <em>kibana</em></a></h2></div><div class="NewsInfo"><div class="NewsDesc" style="width: 100%; ">1、<em>日志</em>文件准备首先<em>日志</em>集成json格式,这个在我搭建的项目案例中的logback-spring.xml中有过配置如何将<em>日志</em>转成json格式,具体参考gitee项目的logback-spring.xml配置,也可参考之前写过的一篇文章。2、... <a title="ELK日志集成(filebeat+kafka+logstash+elasticsearch+kibana)_filebeat elasticsearch kafka logstash kibana" href="/blog/article/detail/68098" target="_blank">[详细]</a></div><div style="clear: both;"></div></div><div class="article_click rice1" style="width: 140px;"><p class="operation-b-img operation-b-img-active"><i class="img-up txclick" attc="upclick" attn="0"></i><span class="num"> 赞</span></p><p class="operation-b-img operation-b-img-active"><i class="img-down txclick" attc="downclick" attn="0"></i><span class="num">踩</span></p></div></li><li><div class="NewTitle"><a title="article" class="cat" href="/blog/article/list/1" target="_blank">article<i></i></a><h2><a title="② 尚品汇的前台开发笔记【尚硅谷】【Vue】_尚品汇购物车支付数据为空数组是为什么" href="/blog/article/detail/69897" target="_blank">② <em>尚品</em>汇<em>的</em>前台开发笔记【尚硅谷】【<em>Vue</em>】_<em>尚品</em>汇<em>购物车</em><em>支付</em><em>数据</em>为空数组是<em>为什么</em></a></h2></div><div class="NewsInfo"><div class="NewsDesc" style="width: 100%; ">②<em>尚品</em>汇<em>的</em>前台开发笔记【尚硅谷】【<em>Vue</em>】整理<em>的</em>笔记_<em>尚品</em>汇<em>购物车</em><em>支付</em><em>数据</em>为空数组是<em>为什么</em><em>尚品</em>汇<em>购物车</em><em>支付</em><em>数据</em>为空数组是<em>为什么</em>文章目录八、加入<em>购物车</em>路由跳转之前发请求api---请求接口将<em>数据</em>存储到服务器里判断加入成功或失败成功后进行路由跳... <a title="② 尚品汇的前台开发笔记【尚硅谷】【Vue】_尚品汇购物车支付数据为空数组是为什么" href="/blog/article/detail/69897" target="_blank">[详细]</a></div><div style="clear: both;"></div></div><div class="article_click rice1" style="width: 140px;"><p class="operation-b-img operation-b-img-active"><i class="img-up txclick" attc="upclick" attn="0"></i><span class="num"> 赞</span></p><p class="operation-b-img operation-b-img-active"><i class="img-down txclick" attc="downclick" attn="0"></i><span class="num">踩</span></p></div></li><li><div class="NewTitle"><a title="article" class="cat" href="/blog/article/list/1" target="_blank">article<i></i></a><h2><a title="华为配置内部人员接入WLAN网络示例(802.1X认证)" href="/blog/article/detail/69591" target="_blank">华为<em>配置</em><em>内部人员</em><em>接入</em><em>WLAN</em>网络示例(<em>802.1</em>X<em>认证</em>)</a></h2></div><div class="NewsInfo"><div class="NewsDesc" style="width: 100%; ">组网图形<em>配置</em><em>802.1</em>X<em>认证</em>组网图。华为<em>配置</em><em>内部人员</em><em>接入</em><em>WLAN</em>网络示例(<em>802.1</em>X<em>认证</em>)<em>配置</em><em>内部人员</em><em>接入</em><em>WLAN</em>网络示例(<em>802.1</em>X<em>认证</em>)组网图形图1 <em>配置</em><em>802.1</em>X<em>认证</em>组网图 业务需求组网需求数据规划<em>配置</em>思路配... <a title="华为配置内部人员接入WLAN网络示例(802.1X认证)" href="/blog/article/detail/69591" target="_blank">[详细]</a></div><div style="clear: both;"></div></div><div class="article_click rice1" style="width: 140px;"><p class="operation-b-img operation-b-img-active"><i class="img-up txclick" attc="upclick" attn="0"></i><span class="num"> 赞</span></p><p class="operation-b-img operation-b-img-active"><i class="img-down txclick" attc="downclick" attn="0"></i><span class="num">踩</span></p></div></li><li><div class="NewTitle"><a title="article" class="cat" href="/blog/article/list/1" target="_blank">article<i></i></a><h2><a title="静态网页托管_码云上部署静态页面" href="/blog/article/detail/68518" target="_blank"><em>静态</em><em>网页</em><em>托管</em><em>_</em>码云上部署<em>静态</em>页面</a></h2></div><div class="NewsInfo"><div class="NewsDesc" style="width: 100%; ">码云Pages是一个免费的<em>静态</em><em>网页</em><em>托管</em>服务,您可以使用码云Pages<em>托管</em>博客、项目官网等<em>静态</em><em>网页</em>。如果您使用过GithubPages那么您会很快上手使用码云的Pages服务。目前码云Pages支持Jekyll、Hugo、Hexo编译<em>静态</em>资源... <a title="静态网页托管_码云上部署静态页面" href="/blog/article/detail/68518" target="_blank">[详细]</a></div><div style="clear: both;"></div></div><div class="article_click rice1" style="width: 140px;"><p class="operation-b-img operation-b-img-active"><i class="img-up txclick" attc="upclick" attn="0"></i><span class="num"> 赞</span></p><p class="operation-b-img operation-b-img-active"><i class="img-down txclick" attc="downclick" attn="0"></i><span class="num">踩</span></p></div></li></ul><div class="list_tools_top">相关标签</div><div class="list_tools_box"><ul><li><a title="java" rel="nofollow" href="/s?w=java" target="_self">java</a></li><li><a title="spring boot" rel="nofollow" href="/s?w=spring boot" target="_self">spring boot</a></li><li><a title="云原生" rel="nofollow" href="/s?w=云原生" target="_self">云原生</a></li><li><a title="git" rel="nofollow" href="/s?w=git" target="_self">git</a></li><li><a title="github" rel="nofollow" href="/s?w=github" target="_self">github</a></li><li><a title="服务器" rel="nofollow" href="/s?w=服务器" target="_self">服务器</a></li><li><a title="windows" rel="nofollow" href="/s?w=windows" target="_self">windows</a></li><li><a title="linux" rel="nofollow" href="/s?w=linux" target="_self">linux</a></li><li><a title="node.js" rel="nofollow" href="/s?w=node.js" target="_self">node.js</a></li><li><a title="javascript" rel="nofollow" href="/s?w=javascript" target="_self">javascript</a></li><li><a title="branch" rel="nofollow" href="/s?w=branch" target="_self">branch</a></li><li><a title="emacs" rel="nofollow" href="/s?w=emacs" target="_self">emacs</a></li><li><a title="maven" rel="nofollow" href="/s?w=maven" target="_self">maven</a></li><li><a title="merge" rel="nofollow" href="/s?w=merge" target="_self">merge</a></li><li><a title="vue.js" rel="nofollow" href="/s?w=vue.js" target="_self">vue.js</a></li><li><a title="webpack" rel="nofollow" href="/s?w=webpack" target="_self">webpack</a></li><li><a title="html" rel="nofollow" href="/s?w=html" target="_self">html</a></li><li><a title="前端" rel="nofollow" href="/s?w=前端" target="_self">前端</a></li><li><a title="微信小程序" rel="nofollow" href="/s?w=微信小程序" target="_self">微信小程序</a></li><li><a title="宿舍管理系统" rel="nofollow" href="/s?w=宿舍管理系统" target="_self">宿舍管理系统</a></li><li><a title="小程序" rel="nofollow" href="/s?w=小程序" target="_self">小程序</a></li><li><a title="uniapp" rel="nofollow" href="/s?w=uniapp" target="_self">uniapp</a></li><li><a title="vue" rel="nofollow" href="/s?w=vue" target="_self">vue</a></li><li><a title="课程设计" rel="nofollow" href="/s?w=课程设计" target="_self">课程设计</a></li><div style="clear: both;"></div></ul></div><div class="list_tools_top"></div></div></div></div><style type="text/css"></style><link rel="stylesheet" href="https://cdn.wpsshop.cn/public/blog/css/phone.css?v=13352890" type="text/css"><script type="text/javascript"></script></div></div></div></div></div><!--row_1_b100_1695--></div><style type="text/css"> /* footer css */ .index006-cover-page-foot { background-color: #F7F7F7; } </style><link rel="stylesheet" href="https://cdn.wpsshop.cn/public/ads/css/ads.css?v=12890" type="text/css"><script type="text/javascript" src="https://cdn.wpsshop.cn/public/ads/js/ads.js?v=1890" ></script><div class="cppui-row-1_100 cppui-row-view-1 row_1_100 ui-draggable" style="display: block;"><div class="cppui-column-1_100-0-1 column-view-com cppui-column-1_100-0-view-1 ui-sortable"><div class="drag-item-show-view-1 footermsg_view_pic ui-draggable" style="display: block;"><!--组件最外层要添加 drag-item-hide-view-1 --><div class="index006-cover-page-foot drag-item-hide-view-1"><p class="copyright">Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。 </p><div style="background-color:#F7F7F7; text-align:center; height:20px;padding-top:5px;"><a target="_blank" href="https://beian.mps.gov.cn/#/query/webSearch" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;"><img src="https://cdnimages.wpsshop.cn/57public/skin/index/default/ui/images/beian_ghs.png" style="float:left;">  <p style="float:left;height:20px;line-height:20px;margin: 0px 0px 0px 5px; color:#939393;">闽ICP备14008679号</p></a>  <a href="https://www.wpsshop.cn/xml/article/detail/68916.xml" target="_blank" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;"><img src="https://cdn.wpsshop.cn/public/blog/images/site.png" style="float:left;"></a>   <a href="/xml/w/g007/article/detail/new.xml" target="_blank" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;"><img src="https://cdn.wpsshop.cn/public/blog/images/site.png" style="float:left;"></a>   <a href="/site.xml" target="_blank" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;"><img src="https://cdn.wpsshop.cn/public/blog/images/site.png" style="float:left;"></a></div></div></div></div><!--row_1_b100_hcsoft_1693--></div><!--tjcode0088--><script type="text/javascript">var domain = document.domain;var hr=encodeURIComponent(window.location.href+'=='+document.referrer); document.write('<script src="https://ad.wpsshop.cn/admin.appflux?s=ad_flu_ind&fluxuserauto=yes&hr='+hr+'&p57weburl='+domain+'&p57usercode1='+domain+'&u=Vy1RJQhqAXUEMQNnAm0HaVVu&i='+p57ref("id")+'&r='+escape(document.referrer)+'" language="JavaScript"><\/script>');function p57ref(id){var reg=new RegExp("(^|&)"+id+"=([^&]*)(&|$)");var ref=window.location.search.substr(1).match(reg);if(ref!=null)return unescape(ref[2]);return null;} </script><!--tjcode0088--></body></html>