自定义过滤器获取不到session问题怎么解决
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,今天给大家介绍一下自定义过滤器获取不到session问题怎么解决。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。自定义过
千家信息网最后更新 2025年01月22日自定义过滤器获取不到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安全错误
数据库的锁怎样保障安全
电玩科技的服务器组装视频
党委网络安全第一责任人
软件开发工程师工资调查
山东济南商中网络技术有限公司
重庆蓝牙软件开发费用
PPT图片素材软件开发
数据库冗余设计实例
中国管网络安全的部门
网络安全和信息化会议总结
西安网络技术支持招聘
x86文件服务器
局域网服务器配置与管理教程
弱电系统软件开发
危害网络安全罪的定性
如何启动吴福气数据库
数据库怎么存地区列表
谷歌网络安全模式
casia夜间红外步态数据库
魔兽世界主宰之剑服务器在哪里
平安互联网科技金融公司
广东专科网络技术专业
四级网络技术
金山区智能网络技术使用方法
怎样查看数据库对表
衡阳市公安局网络安全检查
千里及网络技术有限公司
4.26首都网络安全日
日本服务器在线代理
数据库逻辑运算符求值
数据库索引优缺点