p2p登录拦截
1.编写拦截标签
package com.xmg.p2p.base.util; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 用来标记登陆的标签(登录拦截) * @author Administrator * */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface RequireLogin { }
2.在需要拦截的方法上写标签
@RequireLogin
3.专门用于登录检查的拦截器
package com.xmg.p2p.base.util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; /** * 专门用于登录检查的拦截器 * @author Administrator * */ public class LoginCheckInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //判断登录逻辑 //1. if (handler instanceof HandlerMethod) { HandlerMethod hm = (HandlerMethod) handler; RequireLogin rl = hm.getMethodAnnotation(RequireLogin.class); if (rl!=null && UserContext.getCurrent()==null) { response.sendRedirect("/login.html"); return false; } } return super.preHandle(request, response, handler); } }
4.在springMvc中配置拦截器
<!-- 配置拦截器 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/*"/> <bean class="com.xmg.p2p.base.util.LoginCheckInterceptor" /> </mvc:interceptor> </mvc:interceptors>
(登录检查拦截器的用于存放当前用户的上下文UserContext)
package com.xmg.p2p.base.util; import javax.servlet.http.HttpSession; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import com.xmg.p2p.base.domain.Logininfo; /** * 用于存放当前用户的上下文 * @author Administrator * */ public class UserContext { public static final String USER_IN_SESSION = "logininfo"; /** * 方向获取request * @return */ private static HttpSession getSesssion(){ return ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getSession(); } public static void putCurrent(Logininfo current){ getSesssion().setAttribute(USER_IN_SESSION, current);; } public static Logininfo getCurrent(){ return (Logininfo) getSesssion().getAttribute(USER_IN_SESSION); } }