2015-01-19 1 views
0

При внедрении OAuth2 Spring Security я с трудом получал какие-либо из концов, чтобы ответить на меня. Когда POSTing в/oauth/токен, org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping говорил мне, что POST не разрешен. В конце концов я нашел виновник в моем отображении для вариантов запросов:OAuth2 плохое взаимодействие только с методом @RequestMapping

@RequestMapping(method = RequestMethod.OPTIONS) 
public void systemOptions() { } 

HandlerMapping аннотаций в конечном счете не может найти точное соответствие и разрыхляет ограничения нет, чтобы обеспечить полезный «Нет прямой матч, но вы можете изменить типы носителей или HTTP-метод ". Это замечательно и все, но исключение, которое бросает этот HandlerMapping, не позволяет DispatcherServlet продолжать обрабатывать другие HandlerMappings - одним из которых является OAuth2 FrameworkMappings (именно это я хотел бы, чтобы он отображал меня в первую очередь).

Мой метод systemOptions() существует как RequestMapping только для поддержки запросов CORS OPTIONS от браузеров. У меня есть другой фильтр, который добавляет соответствующие заголовки, связанные с CORS, ко всем запросам.

Теперь мои варианты кажутся довольно резкими, и я хотел бы, чтобы некоторые сообщения сообщества были сделаны, прежде чем я вскочу в этот глубокий конец. Должен ли я обрабатывать запросы CORS OPTIONS полностью внутри фильтра? Должен ли я изменить порядок моих обработчиков Handler? Есть ли лучший способ для меня обрабатывать запросы CORS OPTIONS?

ответ

0

Я думаю, что большинство людей используют Filter для заголовков CORS в этот момент (хотя весна 4.2 должна иметь еще более детальную поддержку). Если я что-то скажу, проблема связана с RequestMappingHandlerMapping, поэтому я бы спросил об этом в Stackoverflow или поднял вопрос в JIRA, если бы вы были вами, и пока используйте Filter.

N.B. это не вопрос OAuth ИМО. Может быть, добавить «spring-mvc» к вашим тегам?

+0

Хорошие баллы. Я буду использовать 'Фильтр' вместо' RequestMapping' и пометьте этот вопрос, как вы предложили. –

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

  • Нет связанных вопросов^_^