关于自定义过滤器获取不到session问题
程序员文章站
2022-06-17 14:40:27
目录自定义过滤器获取不到session问题原因解决办法登录拦截器取到的session为空写了一个拦截器判断有没有登录在另外页面能得到session的值自定义过滤器获取不到session根本原因,多个自...
自定义过滤器获取不到session
根本原因,多个自定义过滤器执行顺序问题
问题
action请求中request对象为shirohttpservletrequest, 可以取到session内容
而在第一个自定义过滤器中request对象为requestfacade,取不到session内容
原因
session由shiro管理,凡是在shiro过滤器顺序之前的自定义过滤器都取不到session内容
解决办法
将shiro过滤器放在第一个位置
登录拦截器取到的session为空
写了一个拦截器
@configuration public class interceptorconfig implements webmvcconfigurer { /** * 注册拦截器 */ @override public void addinterceptors(interceptorregistry registry) { registry.addinterceptor(new myinterceptor()).addpathpatterns("/**.html").excludepathpatterns("/ylogin.html","/yindex.html","/yregister.html"); } }
判断有没有登录
然后那时候我这边session.getattribute(“user”)一直为空
public class myinterceptor implements handlerinterceptor { //在请求处理之前进行调用(controller方法调用之前 @override public boolean prehandle(httpservletrequest httpservletrequest, httpservletresponse httpservletresponse, object o) throws exception { system.out.println("开始请求地址拦截"); //获取session httpsession session = httpservletrequest.getsession(); if (session.getattribute("user") != null) return true; httpservletresponse.sendredirect("/ylogin.html"); return false; } //请求处理之后进行调用,但是在视图被渲染之前(controller方法调用之后) @override public void posthandle(httpservletrequest httpservletrequest, httpservletresponse httpservletresponse, object o, modelandview modelandview) throws exception { system.out.println("posthandle被调用"); } //在整个请求结束之后被调用,也就是在dispatcherservlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作) @override public void aftercompletion(httpservletrequest httpservletrequest, httpservletresponse httpservletresponse, object o, exception e) throws exception { 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的区别
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
上一篇: 用JAVA实现杨辉三角实例