@Lopus

Spring security собственный шаблон для 403?

Как то можно сделать, чтобы spring security возвращал вместо 403 ответа 404 и рендерил при этом файл шаблона templates/error-404.html ?

Я находил некоторые варианты, где предлагают перенаправить на контроллер /error-access-denied, а там уже возвращать нужный html. Но это же костыль какой-то? Неужели в спринге нельзя подставить свою проверку?
  • Вопрос задан
  • 243 просмотра
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Spring
Java Software Engineer
Добрый день.

Можно использовать этот сниппет. Тут можно отловить код http ошибки (statusCode), а затем если значение этой переменной равно 403, то отобразить нужный шаблон.
@Controller
@RequiredArgsConstructor
public class HttpErrorController implements ErrorController {

  @RequestMapping("/error")
  public ModelAndView handleError(HttpServletRequest request) {
    Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
    if (status != null) {
      int statusCode = Integer.valueOf(status.toString());
      // тут при помощи switch case находим код 403 и отдаем нужный шаблон.
    }
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("/frontend/templates/http-errors");
    return modelAndView;
  }

  @SuppressWarnings("deprecation")
  @Override
  public String getErrorPath() {
    return null;
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы