import com.dxw.puzzle.constants.RequestEnum;
import com.dxw.puzzle.vo.RequestVo;
import io.quarkus.arc.Priority;
import org.apache.commons.lang3.StringUtils;
import redis.clients.jedis.Jedis;
import javax.ws.rs.Priorities;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.ext.Provider;
import java.io.IOException;
import java.util.List;
@Priority(Priorities.USER + 1)
@Provider
public class MyFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext containerRequestContext) throws IOException {
if(!StringUtils.isEmpty(containerRequestContext.getHeaderString("token"))){
// token参数
String token = containerRequestContext.getHeaderString("token");
UriInfo uriInfo = containerRequestContext.getUriInfo();
// 请求路径 不包含端口号前面
String path = uriInfo.getPath();
//不进行拦截的接口
List<String> loginURIList = List.of(RequestEnum.LOGIN,
RequestEnum.QY_LOGIN,
RequestEnum.PC_LOGIN
);
if (!loginURIList.contains(path)) {
// 返回参数
Response response = Response.ok(RequestVo.error("token校验失败")).build();
// token校验
if (JWTUtils.checkToken(token) == null){
throw new WebApplicationException(response);
}
Jedis jedis = JedisDateSource.getConnection();
if (StringUtils.isEmpty(jedis.get(token))){
throw new WebApplicationException(response);
}
}
}
}
}
51.日常问题整理[2022/12/09]Quarkus拦截器
于 2022-12-09 09:41:33 首次发布