自定义过滤器获取不到session问题怎么解决
自定义过滤器获取不到session问题怎么解决
今天给大家介绍一下自定义过滤器获取不到session问题怎么解决。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。
自定义过滤器获取不到session
根本原因,多个自定义过滤器执行顺序问题
问题
action请求中request对象为ShiroHttpServletRequest,可以取到session内容
而在第一个自定义过滤器中request对象为requestfacade,取不到session内容
原因
session由shiro管理,凡是在shiro过滤器顺序之前的自定义过滤器都取不到session内容
解决办法
将shiro过滤器放在第一个位置
登录拦截器取到的session为空
写了一个拦截器
@ConfigurationpublicclassInterceptorConfigimplementsWebMvcConfigurer{/***注册拦截器*/@OverridepublicvoidaddInterceptors(InterceptorRegistryregistry){registry.addInterceptor(newMyInterceptor()).addPathPatterns("/**.html").excludePathPatterns("/Ylogin.html","/Yindex.html","/YRegister.html");}}
判断有没有登录
然后那时候我这边session.getAttribute(“user”)一直为空
publicclassMyInterceptorimplementsHandlerInterceptor{//在请求处理之前进行调用(Controller方法调用之前@OverridepublicbooleanpreHandle(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse,Objecto)throwsException{System.out.println("开始请求地址拦截");//获取sessionHttpSessionsession=httpServletRequest.getSession();if(session.getAttribute("user")!=null)returntrue;httpServletResponse.sendRedirect("/Ylogin.html");returnfalse;}//请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)@OverridepublicvoidpostHandle(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse,Objecto,ModelAndViewmodelAndView)throwsException{System.out.println("postHandle被调用");}//在整个请求结束之后被调用,也就是在DispatcherServlet渲染了对应的视图之后执行(主要是用于进行资源清理工作)@OverridepublicvoidafterCompletion(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse,Objecto,Exceptione)throwsException{System.out.println("afterCompletion被调用");}}
在另外页面能得到session的值
但是在拦截器那里就session为null,烦了很久,以为是自己写错了拦截器,搞了很久最后才知道,是login.js写错了。就是ajax的url写错了
$.ajax({type:"POST",url:"/user/doLogin",dataType:"json",data:user,async:false,success:function(res){}})
因为我以前地址写的是url:“http://127.0.0.1:8080/user/doLogin”,把前面的ip地址省略就行了,ip地址和localhost的区别
以上就是自定义过滤器获取不到session问题怎么解决的全部内容了,更多与自定义过滤器获取不到session问题怎么解决相关的内容可以搜索恰卡编程网之前的文章或者浏览下面的文章进行学习哈!相信小编会给大家增添更多知识,希望大家能够支持一下恰卡编程网!
推荐阅读
-
PHP错误WARNING: SESSION_START()
-
php与session会话劫持与会话固定,看完你就知道如何预防了
-
了解的Session的本质
-
PHP-Session利用总结
-
备战金九银十,2020最新大厂PHP面试题(附答案)
-
上网如何保存记录?你要知道Session和Cookie的关系
-
实战经验:修改PHP session存放位置
-
网络安全之php站点被攻击的方式
这里列出16种php站点被攻击的方式1、命令注入(CommandInjection)2、eval注入(EvalInje...
-
如何运用PHP+REDIS解决负载均衡后的session共享问题
-
PHP经典高级工程师面试题
1.PHP如何实现不用自带的cookie函数为客户端下发cookie。对于分布式系统,如何来保存session值...