2013-08-11 2 views
5

Я использую весеннюю безопасность 3.1 и Spring 3.2 для сервисов REST. Я изо всех сил стараюсь, чтобы каждый ответ был JSON, например. если пользователь пытается получить доступ к некоторому ресурсу, но еще не аутентифицирован. Также, если пользователь делает неправильный запрос, я хочу вернуть JSON с сообщением об ошибке.Весенняя обработка ошибок безопасности с ответом JSON

Просто упомянуть, что было бы более приемлемым иметь какое-то глобальное место, где я должен поймать все ошибки/исключения.

+0

Я сейчас пытаюсь понять это один из меня с частью безопасности весны. Найти какое-нибудь решение? В идеале мы хотим иметь один объект ошибки, определенный в json для обработки клиента. – Michael

ответ

3

Почему вы не пишете класс контроллера, расширенный всеми другими контроллерами (или используйте @ControllerAdvice в случае, если вы используете 3.2), и включите в этот класс метод аннотирования с помощью обработчика исключения? Нечто подобное

@ExceptionHandler(Throwable.class) 
public @ResponseBody GenericResponse handleException(Throwable throwable){ 
//handle exception 

} 

Или читать этот дневник post

UPDATE

Извините за столь поздний ответ. Вот мое предложение. Сделайте его просто неудачным с ответом 403. Для этого просто добавьте следующий фрагмент в свою конфигурацию весенней безопасности.

<beans:bean id="entryPoint" 
    class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint" /> 

и точка EntryPoint-исх к этому боба

<http auto-config="true" use-expressions="true" entry-point-ref="entryPoint"> 

И на стороне клиента, в вашем коде AJAX, добавить блок об ошибке

  error : function(jqXHR, textStatus, errorThrown){ 
       if (jqXHR.status == 403){ 
        alert('you need to login to do this operation'); 
        window.location.href = contextPath+"/signin"; 
// or whatever you want to 
       } 
      } 
+3

не решает мою проблему, не улавливает неправильные запросы. Возможно, из-за весенней безопасности. Невозможно принять этот ответ правильно. – Zemzela

+1

Как сказал Земцела, это не позаботится о какой-либо проблеме вокруг весенней безопасности, поскольку она выдает исключение или ошибку до вызова контроллера. – Michael

+0

@Michael: Нехорошо, я пропустил то, что аутентификация выполняется до вызова сервлета диспетчера. Я обновил свой ответ. Пожалуйста, дайте свои идеи. – shazinltc

Смежные вопросы