У меня приложение Spring (не использующее Spring boot), развернутое на tomcat
Я пытаюсь вернуть ошибку 401 (HttpServletResponse.SC_UNAUTHORIZED
) по конкретным URL в указанном условии, используя OncePerRequestFilter
,
Но я продолжаю получать сообщение Не найдено:
Response code: 404
Мой фильтр (снятые условия):
@Component
public class MyFilter extends OncePerRequestFilter {
private static final Logger logger = Logger.getLogger(MyFilter.class);
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Not autorized");
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
try {
PrintWriter out = response.getWriter();
out.write(""); // Empty
out.flush();
} catch (IOException e) {
logger.error("error filtering", e);
}
return; // stop chain
}
}
Я пытался использовать код, аналогичный предыдущий аналогичный ответ
Полагаю, вы можете response.sendError внутри сделать метод Filter.
EDIT
Если я просто выбрасываю исключение, я получаю общий код ошибки 500
Response code: 500
РЕДАКТИРОВАТЬ 2
Я добавляю фильтр внутрь onStartup
Переопределенный метод WebApplicationInitializer
FilterRegistration myFilter = servletContext.addFilter("myFilter ", MyFilter.class);
myFilter.addMappingForUrlPatterns(null, false, "/myservlet/myendpoint/*");
РЕДАКТИРОВАТЬ 3
Также мой фильтр в @Componenet
и его пакет включают в компонентное сканирование
@ComponentScan(basePackages = { "my.parent.pacakge"})