@mvc에 security annotation을 적용하면서 생긴 문제에 대해 문의드립니다.
상위 root applicationContext엔 *Service, *Dao 를, 하위 servletContext엔
*Controller를 설정하였습니다.
그리고 상위 Context에 Security관련 xml설정을 하였습니다.
이렇게 하는 경우 *Service 에서는 security annotation이 잘 동작하지만
Controller에서는 인식을 하지 않습니다.
proxy 적용시점이 각 Context마다 개별로 동작하게 되는 듯한데요.
이런 경우 올바른 설정은 어떻게 해야하는지요?
security관련 설정을 servlet쪽으로 내리면 filter생성시 빈객체를 찾지 못하게됩니다.
결국 security는 rootContext에 붙여야 할 것 같은데 사용은 하위 Controller에서 할 수 있는 방법이 궁금
합니다.
<http auto-config='true'> <intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/> <intercept-url pattern="/**" access="ROLE_USER" /> <form-login login-page='/login.jsp'/> </http>
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.
> security관련 설정을 servlet쪽으로 내리면 filter생성시 빈객체를 찾지 못하게됩니다.
> 결국 security는 rootContext에 붙여야 할 것 같은데 사용은 하위 Controller에서 할 수 있는 방법이 궁금 합니다.
>
필터에서 찾는 Web Application Context는 Root application context인데 스
프링 보안이 설정된 application context는 Dispatcher Servlet에서 설정한
하부 application context이기 때문에 빈을 못 찾고 있습니다.
기존 처럼 root application context에 스프링 보안을 설정하시고 메서드 보
안을 적용하고 싶은 하부 application context에서 <global-method-security>
네임스페이스만 추가로 사용해보십시오. 잘 작동할 겁니다.
박용권님의 말처럼 url path 단위로도 구성을 하는 방법도 있는데요.
board의 경우 list나 view와 write에 대한 권한을 따로 주어 특정 method단위로 권한을 부여하고 싶었습니다.
박성철 님이 알려주신 것처럼
Controller에 대한 mvc설정을 한 하위 Context에서
</sec:global-method-security> 설정을 해보니
아쉽게도 security aop는 정상 적용되지만 mvc annotation은 적용되지 않는 문제가 있었습니다.
JDK proxy의 문제인 듯하여 CGLIB proxy에 대한 설정 옵션을 활성화하니 제대로 동작하였습니다.
<sec:http auto-config="true" use-expressions="true">
많은 도움 주셔서 감사합니다. (__)
proxy-target-class="true"
위 옵션을 추가하였습니다.;;
> > 네임스페이스만 추가로 사용해보십시오. 잘 작동할 겁니다.- 원본 텍스트 숨기기 -
>
> - 원본 텍스트 보기 -