sign 拦截


<beans profile="product,test_sce,test,local">
<context:component-scan base-package="cn.focus.dc.jiajing.interceptors">
<context:include-filter type="regex"
expression=".*Interceptor" />
</context:component-scan>
</beans>



package cn.focus.dc.jiajing.interceptors;

import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

import cn.focus.dc.commons.controllers.CommonsController;
import cn.focus.dc.config.MsgConstant;

import net.paoding.rose.web.ControllerInterceptorAdapter;
import net.paoding.rose.web.Invocation;

/**
* 拦截所有controller方法,对于sign不匹配的连接均拦截
*/
public class SignInterceptor extends ControllerInterceptorAdapter {

private static Logger logger = Logger.getLogger(SignInterceptor.class);

public SignInterceptor(){
this.setPriority(200);
}

@Override
protected boolean isForAction(Method actionMethod, Class<?> controllerClazz) {
if (controllerClazz.equals(CommonsController.class)) {
return Boolean.FALSE;
}
return super.isForAction(actionMethod, controllerClazz);
}

@Override
public Object before(Invocation inv) throws Exception {
String sign = inv.getRequest().getParameter("sign");
Map<String, String[]> params = inv.getRequest().getParameterMap();

String result = DigestUtils.md5Hex(getSignedParams(convertMap(params), MsgConstant.SIGN_MD5_KEY));
logger.info("result===" + result + "\n\t\tsign===" + sign);

if (result.equals(sign)) {
String accessToken = inv.getRequest().getParameter("access_token");
logger.debug("uri===" + result + "\n\t\taccess_token===" + accessToken);
return Boolean.TRUE;
}
logger.info("result===:" + result + "\t\ttime:" + System.nanoTime());
return "@sign error!";
}

private Map<String, String> convertMap(Map<String, String[]> params) {
Map<String, String> map = new HashMap<String, String>();
if (params == null || params.size() == 0) {
return map;
}
for (Map.Entry<String, String[]> entry : params.entrySet()) {
if (entry.getValue() != null && entry.getValue().length > 0) {
map.put(entry.getKey(), entry.getValue()[0]);
}
}
return map;
}

private String getSignedParams(Map<String, String> params, String secretKey) {
Map<String, String> ret = new TreeMap<String, String>(params);
StringBuilder sb = new StringBuilder();
for (String key : ret.keySet()) {
sb.append(key).append("=").append(params.get(key));
sb.append("&");
}
return StringUtils.chomp(sb.toString(), "&") + secretKey;
}
}




String SIGN_MD5_TEST_KEY = new PropertiesUtil().getProperties("/config.properties", "sign.test");
public static String SIGN_MD5_ONLINE_KEY = new PropertiesUtil().getProperties("/config.properties", "sign.online");




sign.test=**********
sign.online=*************************


获取post相关参数

private String getPostData(Map<String, String[]> params) {
Map<String, String> map = convertMap(params);
Map<String, String> ret = new TreeMap<String, String>(map);
StringBuilder sb = new StringBuilder();
for (String key : ret.keySet()) {
sb.append(key).append("=").append(params.get(key));
sb.append("&");
}
return StringUtils.chomp(sb.toString(), "&");
}

private Map<String, String> convertMap(Map<String, String[]> params) {
Map<String, String> map = new HashMap<String, String>();
if (params == null || params.size() == 0) {
return map;
}
for (Map.Entry<String, String[]> entry : params.entrySet()) {
if (entry.getValue() != null && entry.getValue().length > 0) {
map.put(entry.getKey(), entry.getValue()[0]);
}
}
return map;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值