スプリングのブロック
4838 ワード
方式:
1、実現インターフェース:org.springframe ework.web.servlet.Handler Interceptor
2、抽象類の継承:org.springframe ework.web.servlet.handler.Handler InterceptorAdapter
springプロファイル:
1、実現インターフェース:org.springframe ework.web.servlet.Handler Interceptor
2、抽象類の継承:org.springframe ework.web.servlet.handler.Handler InterceptorAdapter
springプロファイル:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/restapi/user/identifycode/**" />
<mvc:mapping path="/restapi/user/email/edit" />
<bean class="com.maijia.ucenter.rest.web.interceptors.IdentifyCodeInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
グローバルブロック:<mvc:interceptors>
<bean class="com.app.mvc.MyInteceptor" />
</mvc:interceptors>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> <property name="interceptors">
<list>
<bean class="com.mvc.MyInteceptor"></bean>
</list>
</property>
</bean>
スクリーンクラス:package com.caiya.ucenter.rest.web.interceptors;
import java.util.Date;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.caiya.ucenter.rest.web.utils.ClientIpUtils;
import com.caiya.cache.ICache;
/**
* , 60
* ADD
* &
*/
public class IdentifyCodeInterceptor extends HandlerInterceptorAdapter {
@Resource
private ICache cache;
private static Logger logger = Logger.getLogger(IdentifyCodeInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
String path = request.getRequestURI();
String ip = ClientIpUtils.getClientIP(request);
if(path.contains("/restapi/user/identifycode/sms")){
//
String mobile = request.getParameter("mobile");
if(cache.get(createCacheKey(mobile)) != null){
logger.error(new StringBuilder("ip:").append(ip).append(",mobile:").append(mobile).append(" 1 , !"));
throw new IllegalAccessException(" 1 !");
}
}else if(path.contains("/restapi/user/identifycode/email") || path.contains("/restapi/user/email/edit")){
//
String email = request.getParameter("email");
if(cache.get(createCacheKey(email)) != null){
logger.error(new StringBuilder("ip:").append(ip).append(",email:").append(email).append(" 1 , !"));
throw new IllegalAccessException(" 1 !");
}
}
// ip
if(cache.get(createCacheKey(ip)) != null){
logger.error(new StringBuilder("ip:").append(ip).append(",ip:").append(ip).append(" 1 , !"));
throw new IllegalAccessException(" 1 !");
}
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
String path = request.getRequestURI();
String ip = ClientIpUtils.getClientIP(request);
if(path.contains("/restapi/user/identifycode/sms")){
//
String mobile = request.getParameter("mobile");
try{
// 1 , preHandle ,
cache.set(createCacheKey(mobile), new Date(), 60);
}catch(Exception e){
logger.error(e.getMessage(), e);
}
}else if(path.contains("/restapi/user/identifycode/email") || path.contains("/restapi/user/email/edit")){
//
String email = request.getParameter("email");
try{
// 1 , preHandle ,
cache.set(createCacheKey(email), new Date(), 60);
}catch(Exception e){
logger.error(e.getMessage(), e);
}
}
// ip
try{
// 1 , preHandle ,
cache.set(createCacheKey(ip), new Date(), 60);
}catch(Exception e){
logger.error(e.getMessage(), e);
}
super.postHandle(request, response, handler, modelAndView);
}
private String createCacheKey(String address){
return new StringBuilder("ic_").append(address).toString();
}
}