package cc.mrbird.febs.common.security.starter.interceptor;
|
|
import cc.mrbird.febs.common.core.entity.FebsResponse;
|
import cc.mrbird.febs.common.core.entity.constant.FebsConstant;
|
import cc.mrbird.febs.common.core.utils.FebsUtil;
|
import cc.mrbird.febs.common.security.starter.properties.FebsCloudSecurityProperties;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.lang.NonNull;
|
import org.springframework.util.Base64Utils;
|
import org.springframework.web.servlet.HandlerInterceptor;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
|
/**
|
* @author MrBird
|
*/
|
public class FebsServerProtectInterceptor implements HandlerInterceptor {
|
|
private FebsCloudSecurityProperties properties;
|
|
@Override
|
public boolean preHandle(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, @NonNull Object handler) throws IOException {
|
if (!properties.getOnlyFetchByGateway()) {
|
return true;
|
}
|
String token = request.getHeader(FebsConstant.GATEWAY_TOKEN_HEADER);
|
String gatewayToken = new String(Base64Utils.encode(FebsConstant.GATEWAY_TOKEN_VALUE.getBytes()));
|
if (StringUtils.equals(gatewayToken, token)) {
|
return true;
|
} else {
|
FebsResponse febsResponse = new FebsResponse();
|
FebsUtil.makeJsonResponse(response, HttpServletResponse.SC_FORBIDDEN, febsResponse.message("请通过网关获取资源"));
|
return false;
|
}
|
}
|
|
public void setProperties(FebsCloudSecurityProperties properties) {
|
this.properties = properties;
|
}
|
}
|