关于自定义过滤器获取不到session问题

网友投稿 637 2022-11-08

关于自定义过滤器获取不到session问题

关于自定义过滤器获取不到session问题

目录自定义过滤器获取不到session问题原因解决办法登录-取到的session为空写了一个-判断有没有登录在另外页面能得到session的值

自定义过滤器获取不到session

http://

根本原因,多个自定义过滤器执行顺序问题

问题

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 MyInterceptorhttp://()).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, ObIRsRKject 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 ExceptioIRsRKn {

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的区别

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:AttributeError: ‘VotingClassifier‘ object has no attribute ‘set_criterion‘
下一篇:请实现一个函数,将一个字符串中的空格替换成
相关文章

 发表评论

暂时没有评论,来抢沙发吧~