关于自定义过滤器获取不到session问题
作者:MrBlackWhite 时间:2022-05-16 11:30:21
自定义过滤器获取不到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的区别
来源:https://blog.csdn.net/u011665991/article/details/80775508
标签:自定义,过滤器,session
0
投稿
猜你喜欢
Java 实现拦截器Interceptor的拦截功能方式
2023-04-25 04:35:15
Android对话框使用方法详解
2023-11-09 03:37:51
DevExpress实现为TextEdit设置水印文字的方法
2021-11-11 14:27:32
关于spring boot中几种注入方法的一些个人看法
2022-09-07 10:15:14
Android应用强制更新APP的示例代码
2022-07-28 09:00:07
Android studio 出现错误Run with --stacktrace option to get the stack trace. Run with --info or --debu
2022-10-25 09:43:15
SpringBoot中读取application.properties配置文件的方法
2023-10-20 17:29:05
Java判断所给年份是平年还是闰年
2023-10-21 17:48:59
Java 定时器的多种实现方式
2021-06-14 03:15:09
java中synchronized(同步代码块和同步方法)详解及区别
2021-09-03 08:44:05
SpringBoot实现接口数据的加解密功能
2023-06-30 00:11:01
WebView的几个常见功能使用方法
2023-01-25 13:54:48
C#仪器数据文件解析Excel文件的方法浅析(xls、xlsx)
2023-09-18 01:40:57
基于Unity3D实现3D照片墙效果
2023-05-22 00:18:51
Android 高德地图之poi搜索功能的实现代码
2022-03-07 01:36:52
Java深入探究Object类的方法
2022-11-24 06:48:53
Java如何使用httpclient检测url状态及链接是否能打开
2022-07-03 21:23:25
关于SpringMVC在Controller层方法的参数解析详解
2022-10-29 01:06:10
Java结构性设计模式中的装饰器模式介绍使用
2022-04-08 06:30:00
Springboot中登录后关于cookie和session拦截问题的案例分析
2022-09-25 19:26:44