
cn.bestwu.api.sign.ApiSignAspect Maven / Gradle / Ivy
package cn.bestwu.api.sign;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.oauth2.common.exceptions.InvalidRequestException;
import javax.servlet.http.HttpServletRequest;
@Slf4j
@Aspect
public class ApiSignAspect {
@Autowired(required = false)
private HttpServletRequest request;
@Autowired
private ApiSignAdpter apiSignAdpter;
private boolean skipAdmin = true;
private SignMode signMode = SignMode.REQUEST_HEADER;
private String signParameter = "sign";
public void setSignParameter(String signParameter) {
this.signParameter = signParameter;
}
public void setSignMode(SignMode signMode) {
this.signMode = signMode;
}
public void setSkipAdmin(boolean skipAdmin) {
this.skipAdmin = skipAdmin;
}
@Before(value = "(!@annotation(cn.bestwu.api.sign.NoApiSign)&&!@within(cn.bestwu.api.sign.NoApiSign))&&(@annotation(cn.bestwu.api.sign.ApiSign)||@within(cn.bestwu.api.sign.ApiSign))&&@annotation(org.springframework.web.bind.annotation.RequestMapping)")
public void verify() {
String sign = null;
switch (signMode) {
case REQUEST_HEADER:
sign = request.getHeader(this.signParameter);
break;
case REQUEST_BODY:
sign = request.getParameter(this.signParameter);
break;
}
if (!apiSignAdpter.isSign(request.getParameterMap(), sign, skipAdmin)) {
throw new InvalidRequestException("invalid_request");
} else if (log.isDebugEnabled()) {
log.debug("sign check pass");
}
}
public enum SignMode {
REQUEST_HEADER, REQUEST_BODY
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy