千家信息网

自定义过滤器获取不到session问题怎么解决

发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,今天给大家介绍一下自定义过滤器获取不到session问题怎么解决。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。自定义过
千家信息网最后更新 2024年11月15日自定义过滤器获取不到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安全错误 数据库的锁怎样保障安全 订做存储服务器机箱加工 警方通过dna数据库对比 服务器冷启动多长时间 关系数据库各级范式的关系是 delete数据库怎么删除 软件开发公司概况 桓台模具软件开发 北京微梦科技网络技术有限公司 本科毕业论文原始数据库 网络安全教育拼音角 软件开发环境要交钱吗 快客加速服务器下载 怎样知道对面服务器端口 国产数据库编程语言 数据库备份怎么省空间 进口企业实时数据库价格 汽车产品软件开发公司有哪些 如何提高网络安全应急演练 九江小房蜂网络技术有限公司 贵州省视频会议服务器云主机 关于网络安全应用平台 软件开发二本哪个学校好 常州工业软件开发 关系型数据库设置太多外键 银行管理系统安全控制数据库 福建计算机网络技术基础期末 如何通过路由器连接服务器与电脑 链接数据库php代码 项目 网上书店 数据库 数据库查询生成报告
0