自定义过滤器获取不到session问题怎么解决
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,今天给大家介绍一下自定义过滤器获取不到session问题怎么解决。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。自定义过
千家信息网最后更新 2024年11月14日自定义过滤器获取不到session问题怎么解决
今天给大家介绍一下自定义过滤器获取不到session问题怎么解决。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。
自定义过滤器获取不到session
根本原因,多个自定义过滤器执行顺序问题
问题
action请求中request对象为ShiroHttpServletRequest, 可以取到session内容
而在第一个自定义过滤器中request对象为requestfacade,取不到session内容
原因
session由shiro管理,凡是在shiro过滤器顺序之前的自定义过滤器都取不到session内容
解决办法
将shiro过滤器放在第一个位置
登录拦截器取到的session为空
写了一个拦截器
@Configurationpublic 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的区别
以上就是自定义过滤器获取不到session问题怎么解决的全部内容了,更多与自定义过滤器获取不到session问题怎么解决相关的内容可以搜索之前的文章或者浏览下面的文章进行学习哈!相信小编会给大家增添更多知识,希望大家能够支持一下!
过滤器
内容
问题
拦截器
地址
文章
原因
对象
就是
方法
是在
更多
视图
顺序
处理
登录
不错
也就是
位置
办法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
淄博企业软件开发定制
最终幻想14服务器人数查询
商贸流通管理软件开发方案
啥是协同软件开发
互联网科技品牌范方面
软件开发文档都有哪些
非计算机专业数据库就业
绍兴营销网络技术服务费
数据库的建设与发展
技术支持数据库方向
数据服务器一直循环启动
迷你世界的服务器怎么做
pod文件管理服务器
校园安防依托什么网络技术
国旗下演讲网络安全
物业app软件开发方案
如何管理应用软件开发存在的风险
软件开发项目特征
德惠网络安全欢迎咨询
公安部门网络安全知识培训
软件开发投标文件技术
山西程序软件开发诚信企业
如何查询数据库中的表名
用服务器的电脑办公会怎样
漳州市政务网络安全预警平台
未成年人网络安全保护立法论文
ios软件开发工程师好吗
网络安全 技术 要求
网信办网络安全致辞
西安云纳网络技术有限公司