springmvc 拦截器
/** * 用户登录拦截器 * @author Administrator * */ public class LoginInterceptor implements HandlerInterceptor { /** * 前处理,执行 handler 之前执行此方法( handler 就是方法 ) */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //1.从 cookie 中取 token //判断 token 是否存在 //2.如果没有 token,说明是未登录状态。跳转到 sso 系统登录页面。用户登录成功后,跳转到当前请求的 url //response.sendRedirect("http://localhost:8080/sso?redirec="+ request.getRequestURL());//不同的工程跳转,需要 redirect,将当前 url 传过去 //3.如果取到 token,需要调用 sso 系统的服务,根据 token 取得用户信息 //4.如果 sso 服务没取到用户信息。说明登录过期,跳转到 sso 系统登录页面。用户登录成功后,跳转到当前请求的 url //5.如果 soo 服务取到用户信息。则把用户信息放入 request 中 return true; } /** * handler 执行之后,返回 ModelAndView 之前 执行 */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // TODO Auto-generated method stub } /** * 完成处理,返回 ModelAndView 之后 执行 * 可以再次处理异常 */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
springMVC 配置文件
<!-- 拦截器配置 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/><!--拦截所有请求--> <bean class="com.fw.LoginInterceptor"/> </mvc:interceptor> </mvc:interceptors>