Spring Security + MVC :Вопросы, связанные с определением контекста и областью действия bean-компонента

Я пытаюсь понять рекомендуемый способ определения Spring Security в приложениях Spring -MVC, где определения bean-компонентов разделены на несколько родительских/дочерних контекстов.

Например, мое текущее приложение web.xmlвыглядит следующим образом (, которое я понимаю как довольно стандартное)


    contextConfigLocation
    
    classpath:applicationContext.xml
    /WEB-INF/securityContext.xml
    


    org.springframework.web.context.ContextLoaderListener


    springSecurityFilterChain
    org.springframework.web.filter.DelegatingFilterProxy


    springSecurityFilterChain
    /*


    spring-mvc
    org.springframework.web.servlet.DispatcherServlet
    1


    spring-mvc
    /app/*

Итак, у меня есть стандарт ContextLoaderListener, определенный в /, который загружает мои глобальные конфигурации-applicationContext.xmlи securityContext.xml. Я также определяю Spring MVC DispatcherServletв /app/, который загружает свои собственные bean-компоненты из spring-mvc-servlet.xml.

Насколько я понимаю, конфигурация, определенная в spring-mvc-servlet.xml, не видна для конфигурации, определенной в любом из контекстных файлов верхнего -уровня.

Где же тогда лучше всего определять концепции безопасности на уровне приложения -? Например, я хотел бы добавить следующий фильтр.


    

Это сделано для того, чтобы запросы к /app/oauth/tokenпроходили через этот фильтр и обрабатывались базовой аутентификацией.

Поскольку это относится непосредственно к приложению Spring -MVC, я изначально определил его в spring-mvc-context.xml(, поэтому appисключен из URL-адреса ).

Однако это означает, что он невидим для конфигурации безопасности, определенной в securityContext.xml, поэтому он игнорируется.

Итак, я перемещаю его на securityContext.xml, но при этом также должен перемещать все зависимости. Я быстро заканчиваю тем, что перемещаю все до applicationContext.xml, что оставляет spring-mvc-context.xmlпочти пустым.

Это обычное дело? Каково рекомендуемое разделение между тем, что определено в контекстах верхнего -уровня, и тем, что определено в дочерних контекстах?

Учитывая, что spring -mvc определяет ряд контроллеров, которые я хочу пометить как @Secured, как они будут обрабатываться, если контроллер не виден контексту безопасности?

Нужно ли мне перемещать мой из servlet.xmlв глобальный applicationContext.xml? Нужна ли мне дополнительная настройка в spring-mvc-servlet.xml, чтобы указать ему участвовать в безопасности Spring?

Я прочитал документацию по Spring -MVC , но там очень мало подробностей о том, как это настроить. Кроме того, примеры Spring OAuth , кажется, определяют все в одном файле конфигурации, что не кажется очень реальным -миром и, кажется, противоречит другим примерам, которые я читал.

5
задан Marty Pitt 30 April 2012 в 01:21
поделиться