Spring mvc拦截器+angular js拦截器 做用户登录拦截控制
来源:互联网 发布:mybatis动态sql详解 编辑:程序博客网 时间:2024/05/17 02:49
前端使用angular js、后台使用java做用户的登录控制。当用户未登录时自动跳转到登录页面。
用户登录成功添加session:
HttpSession session=request.getSession(); UserToken usertoken=new UserToken(); usertoken.setNickname((String)map.get("nickname")); ... usertoken.setUsername((String)map.get("username")); /* * 设置session */ session.setAttribute("userToken", usertoken); //超时时间20分钟 session.setMaxInactiveInterval(60*20);
拦截器配置文件代码
applicationContext.xml
<!-- 登录拦截 --> <mvc:interceptors> <mvc:interceptor> <!-- 拦截全部地址 --> <mvc:mapping path="/**" /> <!-- 登录拦截类 --> <bean id="loginInterceptor" class="com.beicheng.user.interceptor.LoginInterceptor"> </bean> </mvc:interceptor> </mvc:interceptors>
Spirng 拦截器控制类代码
试过在preHandle中使用response.sendRedirect(request.getContextPath()
+”auth/login.html”)做自动跳转没成功,后来直接修改返回的状态码,在前端进行拦截处理
public class LoginInterceptor implements HandlerInterceptor { //日志 private static Log logger=LogFactory.getLog(LoginInterceptor.class); public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handle) throws Exception { //创建session HttpSession session =request.getSession(); //无需登录,允许访问的地址 String[] allowUrls =new String[]{"/logininfo","/login"}; //获取请求地址 String url =request.getRequestURL().toString(); //获得session中的用户 //userToken是自定义的类,当用户登录成功后向session中添加的 UserToken user =(UserToken) session.getAttribute("userToken"); for (String strUrl : allowUrls) { if(url.contains(strUrl)) { return true; } } if(user ==null) { //状态码 401 表示用户未登录 response.setStatus(401); return false; } return true; } public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { }
angular js拦截器代码
//登录拦截app.config(function ($httpProvider) { $httpProvider.interceptors.push('AuthInterceptor');})app.factory('AuthInterceptor', function ($rootScope, $q,$location) { return { requestError:function(request){ return $q.reject(response); }, responseError:function (response) { console.log(response); if(response.status=='401') { alert("登录超时!"); $location.url('/auth/login'); } return $q.reject(response); } };})
阅读全文
0 0
- Spring mvc拦截器+angular js拦截器 做用户登录拦截控制
- spring mvc登录拦截器
- spring mvc登录拦截器
- spring 用户登录拦截器
- Spring MVC拦截器,登录拦截简单配置
- Spring mvc拦截器实现登录验证拦截
- spring mvc拦截器之拦截未登录
- 用户登录拦截器
- struts2 拦截器控制用户登录权限
- Spring MVC实现的登录拦截器
- spring mvc 拦截器拦截 js,css等请求,
- Spring MVC 拦截器
- Spring MVC 拦截器
- Spring MVC 拦截器
- spring MVC拦截器
- Spring MVC拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- PHP For 循环
- 开门大吉
- P1605 迷宫
- 用户文件下载服务解决方案
- protobuf转json
- Spring mvc拦截器+angular js拦截器 做用户登录拦截控制
- 使用Spring提供的BeanUtils.copyProperties()方法报错:Could not copy property 'xxx' from source to target
- ArrayList
- Java不可变对象
- 如何绕过CDN找源站ip?
- 解決org.quartz.JobPersistenceException: Couldn't acquire next trigger: Couldn't retrieve trigger: null
- windows中搭载openssl环境
- 理解点击事件的事件分发过程
- 如何配置idea使一个窗口包含多个工程