vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐使用axios。前段时间第一次在项目里用到vue,关于登陆问题,这里写一下心得。
进口org.springframework.web.servlet.handler.HandlerInterceptorAdapter; 进口com.lovnx.gateway.po.User; 进口javax.servlet.http.HttpServletRequest; 进口javax.servlet.http.HttpServletResponse; 公开课LoginInterceptor延伸HandlerInterceptorAdapter { @Override 公共布尔preHandle (HttpServletRequest请求,HttpServletResponse响应对象处理程序){抛出异常 用户用户=(用户)request.getSession () .getAttribute(“用户”); 如果(用户==null) { response.sendError (401); 返回错误; 其他} 返回true; } }
这里做的处理就是:如果会话里面没有用户了,就向前端返回401错误。
从“Vue”进口Vue 从“element-ui”进口ElementUI 导入“element-ui/lib/theme-default/index.css” 导入应用程序从“/App。” 从“进口路由器。/路由器的 从“axios”进口axios//http响应拦截器 axios.interceptors.response.use ( 响应=比;{ 返回响应; }, 错误=比;{ 如果(error.response) { 如果(error.response。状态==401){ store.commit (types.LOGOUT); router.replace ({ 路径:“登录”, 查询:{重定向:router.currentRoute.fullPath} }) } } 返回Promise.reject (error.response.data)//返回接口返回的错误信息 });
注意,这里的拦截器写在main.js中。
//- - - - - - - - - - - -分割线- - - - - - - - - - - - -//
当然,以上的这种方式是把登陆页面写在了Vue工程里面,下面介绍一种用独立的登陆页面结合Vue工程的例子。
<>强工程目录:强>
其中的静态和index . html是webpack打包后的东西。
这里的思想要结合以前写的一篇博文:<强>重写ajax实现会话超时跳转到登陆页面强>
大概思想就是:请求任何一个页面,后端拦截器拦截到请求,查看会话里的用户信息存在与否,如果不存在就跳转到这个登录。html,如果存在就正常响应数据。这里要对前端拦截器稍微改动一下:
从“Vue”进口Vue 从“element-ui”进口ElementUI 导入“element-ui/lib/theme-default/index.css” 导入应用程序从“/App。” 从“进口路由器。/路由器的 从“axios”进口axios//http响应拦截器 axios.interceptors.response.use ( 响应=比;{//这个判断是关键,如果返回登陆页面内容了,就刷新当前页面,经后端处理就会跳转到登陆页面了 var temp=响应。数据+ "; 如果(temp.indexOf (lkdjoifdgjdfgjdfgjfh24546)比;1){ router.go (0); } 返回响应; }, 错误=比;{ 如果(error.response) {//退出登陆的时候就响应于401年即可 如果(error.response。状态==401){ router.go (0); } } 返回Promise.reject (error.response.data)//返回接口返回的错误信息 });
其中,lkdjoifdgjdfgjdfgjfh24546这个是写在登陆页面一个隐藏域里面的。
进口org.springframework.web.servlet.handler.HandlerInterceptorAdapter; 进口com.lovnx.gateway.po.User; 进口javax.servlet.http.HttpServletRequest; 进口javax.servlet.http.HttpServletResponse; 公开课LoginInterceptor延伸HandlerInterceptorAdapter { @Override 公共布尔preHandle (HttpServletRequest请求,HttpServletResponse响应对象处理程序){抛出异常 字符串requestUri=request.getRequestURI (); 字符串contextPath=request.getContextPath (); 如果(requestUri.indexOf祝辞("/login.html ");1 | | requestUri.indexOf祝辞(“/系统/登录”);1){ 返回true; } 用户用户=(用户)request.getSession () .getAttribute(“用户”); 如果(用户==null) {//未登录跳转到登录页面!”); 响应。sendRedirect (contextPath + "/login.html "); 返回错误; 其他} 返回true; } }
以上这篇Vue2.0 axios前后端登陆拦截器(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。