package com.jshoperx.action.app.interceptor;
import com.jshoperx.action.app.common.AppMsg;
import com.jshoperx.action.app.vo.base.RequestBaseMsg;
import com.jshoperx.action.backstage.utils.GsonJson;
import com.jshoperx.redis.service.RedisBaseTService;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.ParentPackage;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
/**
* 验证app访问接口的权限
* @ClassName: ValidateAppInterceptor
* @Description: TODO
* @author sdywcd@gmail.com
* @date 2015年4月13日 下午4:14:14
*
*/
@ParentPackage("jshoperx")
public class ValidateAppInterceptor extends MethodFilterInterceptor{
@Resource
private RedisBaseTService<String> redisBaseTService;
private boolean sucflag;
public boolean isSucflag() {
return sucflag;
}
public void setSucflag(boolean sucflag) {
this.sucflag = sucflag;
}
@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
Map<String,Object> params=invocation.getInvocationContext().getParameters();
String []token=(String[])params.get("token");
if(token!=null&&token.length>0){
//在redis中查询token
String rtoken=redisBaseTService.get(token[0], String.class);
if(rtoken!=null){
if(StringUtils.equals(rtoken, token[0])){
return invocation.invoke();
}
}
}
printMsg();
return null;
}
private void printMsg() throws IOException{
RequestBaseMsg rm=new RequestBaseMsg();
rm.setMsg(AppMsg.INVALIDACCESS);
String jsonstr = GsonJson.parseDataToJson(rm);
PrintWriter out = null;
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType(AppMsg.CONTENTTYPE);
response.setCharacterEncoding(AppMsg.ENCODING);
out = response.getWriter();
out.write(jsonstr);
}
}