今天遇到一个小问题,自定义的shiro过滤器没有执行。。最后发现是没有调用,需要在shiro的配置文件上调用才能被执行。代码如下:
<bean id="chainDefinitionSectionMetaSource" class="com.zslbase.shiro.core.ChainDefinitionSectionMetaSource">
<property name="filterChainDefinitions">
<value>
/resources/** = anon
/view/error/** = anon
/login.html = anon
/logout.html = logout
/** =loginFilter //可以在需要过滤的url添加自定义过滤器。这表示每次请求都会执行过滤器。
</value>
</property>
</bean>
还有一个问题就是session死亡后,达到页面跳转到登陆界面的功能。可以用这样,
因为ajax不能跳转,所以我们可以判断 如果sessioon已死并且他是ajax请求,可以返回一个固定code,让前端去跳转到登录页面。
// 判断是否是ajax请求
if (ShiroFilterUtil.isAjax(request)) {
Map<String,Object> resultMap = new HashMap();
resultMap.put("code",ResultCodeEnum.LOGIN.getCode());
resultMap.put("info",ResultCodeEnum.LOGIN.getDescript());
resultMap.put("success",false);
ShiroFilterUtil.out(response, resultMap);
}else{
redirectToLogin(request, response);
}
*一个博主对ajax不能执行跳转的原因分析 言简意赅 https://blog.youkuaiyun.com/Trustallandtos/article/details/84917149