Cron 和容器请求过滤器

时间:2021-02-10 09:21:16

标签: java resteasy

我已经实现了一个 ContainerRequestFilter 来验证所有发出的请求并检查用户是否具有使用某些端点的正确权限。但我也有一些编程任务或 java cron,我想知道是否有某种方法可以知道该请求是由 cron 调用的还是由其他调用它的人调用的。

当前代码:

public class Filter implements ContainerRequestFilter {
    private static final Logger LOGGER = Logger.getLogger(Filter.class.getSimpleName());

    @Context
    private HttpServletRequest request;

    private User user = (User) SpringApplicationContext.getBean("user");

    @Override
    public void filter(ContainerRequestContext requestContext) {
        try {

            String userString = requestContext.getHeaders().get("user").get(0);
            if (userString == null) {
                requestContext.abortWith(ACCESS_FORBIDDEN);
                return;
            }

            String endpoint = requestContext.getUriInfo().getPath();

            if (!user.hasAccess(userString, endpoint)) {
                requestContext.abortWith(ACCESS_DENIED);
                return;
            }
        } catch (BusinessException e) {
            e.printStackTrace();
            requestContext.abortWith(ACCESS_FORBIDDEN);
            return;
        }catch (Exception e){
            e.printStackTrace();
            requestContext.abortWith(SERVER_ERROR);
            return;
        }finally {
            LOGGER.info("FINISHED");
        }
    }
}

0 个答案:

没有答案
相关问题