Whiteship's Note

[Spring Security] http 네임스페이스 쓰려면 필터 이름은 항상 고정(?)

Spring Security/etc : 2010. 6. 29. 17:02


http://static.springsource.org/spring-security/site/docs/3.0.x/reference/appendix-namespace.html#nsa-http-attributes

<filter>
<filter-name>securityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

   <filter-mapping>
       <filter-name>securityFilterChain</filter-name>
       <url-pattern>/*</url-pattern>
   </filter-mapping>
    

자 이렇게 필터를 설정하고 

<http>
        <intercept-url pattern="/base/color/mgt" access="ROLE_USER" />
        <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<form-login login-page="/login" />
<logout logout-success-url="/index" />
<remember-me />
</http>

    <beans:bean id="smdisUserDetailsService" class="smdis.common.security.SmdisUserDetailsService"/>

<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="smdisUserDetailsService"/>
</authentication-manager>

<global-method-security secured-annotations="enabled"
jsr250-annotations="enabled" pre-post-annotations="enabled" />

이렇게 시큐리티 설정을 했다.

잘 돌아갈까?? 안 돌아간다.. 시큐리티 네임스페이스를 사용해서 <http>를 등록하면 FileChainProxy 빈 이름은 항상 springSecurityFilterChain이 된다. 그래서 필터 이름을 springSecurityFilterChain으로 설정해줘야 한다.

뭐.. DelegatingFilterProxy 필터 자체에 targetBeanName 속성을 사용해서 연결할 빈 이름을 설정할 수도 있지만 기본적으로 이 이름은 필터 이름을 따르게 된다. 필터 이름을 바꾸고 targetBeanName을 또 설정해 주느니 그냥 필터 이름을 springSecurityFileterChain으로 하는게 좋겠다.

<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
top

Write a comment.




: 1 : ··· : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : 51 : ··· : 2638 :