前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用shiro自定义过滤器,拦截ajax请求,可用于动静分离

使用shiro自定义过滤器,拦截ajax请求,可用于动静分离

作者头像
风间影月
发布2018-04-04 16:50:35
2.2K0
发布2018-04-04 16:50:35
举报
文章被收录于专栏:BeJavaGodBeJavaGodBeJavaGod

shiro,不多说了,都知道是权限框架

用过shiro的都知道shiro自己有各种过滤器,只要配置好了就可以自动过滤,自动跳转到对应的页面,比如:认证,授权,退出等,都是通过自身的过滤器,

咱们来看这张图就能大致看到shiro基础过滤器的从属关系

今天我们要说的是session过期,是个最简单的过滤,在普通的MVC后台开发中,只要自己定义一个过滤器,拦截请求,判断session中的登录者是否失效,失效了就自动退出,但是,shiro过滤器基于servlet,当然也是这么做的,但是如今使用ajax的框架很多,比如easyUI,extJS,或者有的公司自己实现全ajax静态分离,遇到这样的情况,shiro拦截到session过期后,是不会页面跳转的,那么这个时候就要重写过滤器了

首先,在spring-shiro.xml中得自定义你的过滤器

然后自定义过滤器需要继承FormAuthenticationFilter.java这个类,并且重写

这个方法,<1>是自己写的判断当前request是否ajax请求,

<2>抛出异常,让前端js接受到response请求认证失败,

<3>是很早以前的写法,只支持ajax load页面形式,但是ajax post类请求是不行的

然后前端catch到这个错误消息

处理一下这个错误就行,这个Error是我自己定义的一个JS类对象,可以看一下十分简单:

好,把session时间微调到10s,失效后进行测试,不论是页面级别请求还是ajax请求,都能够跳转至登录页面,当然了如果你有其他的错误都可以封装到这个类中,并且这个.js可以被任何页面调用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BeJavaGod 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档