복붙노트

[SPRING] 스프링 보안은 "? 매개 변수"형식과 일치 할 수 없습니까?

SPRING

스프링 보안은 "? 매개 변수"형식과 일치 할 수 없습니까?

스프링 보안을 사용하여 웹을 보호합니다. 노드의 applicationContext-security.xml에있는 spring-roo 생성 구성 파일을 사용하여이를 학습합니다.

 <intercept-url pattern="/userses?form" access="hasRole('ROLE_ADMIN')" />

그것은 당신이 ADMIN 권한을 얻기 위해 먼저 로그인을해야만 Users 객체를 생성하고자 할 때를 의미합니다. 그러나 실제로 그것은 효과가 없었습니다. 로그 확인 :

2012-05-06 11:39:11,250 [http-8088-7] DEBUG org.springframework.security.web.util.AntPathRequestMatcher - Checking match of request : '/userses'; against '/userses?form'

프레임 워크는 / userses 대신에 / userses 형식을 사용하여 문자열을 비교하지 않고 건너 뛴 인증 프로세스와 비교합니다. 이것을 확인하기 위해 또 다른 URL을 시도해보십시오.

<intercept-url pattern="/userses/abc" access="hasRole('ROLE_ADMIN')" />

나는 / userses / abc를 요청했는데, 사용자가 승인되지 않았 음을 감지하고 / login 페이지로 이동하여 로그를 확인했습니다 :

2012-05-06 11:46:44,343 [http-8088-7] DEBUG org.springframework.security.web.util.AntPathRequestMatcher - Checking match of request : '/uesrses/abc'; against '/userses/abc'

그래서 내 질문은 : 스프링 3 지원 "매개 변수"패턴을 지원하지 않거나 내가 이것을 지원하기 위해 뭔가를 놓쳤는가? 추신 : 모든 코드는 수정없이 roo에 의해 생성되며, 왜 작동하지 않는지 궁금합니다.

해결법

  1. ==============================

    1.기본적으로 스프링 보안은 매개 변수와 일치 할 수없는 개미 스타일 매칭을 사용합니다. 그러나 정규식 일치는 매개 변수와 일치 할 수 있습니다.

    기본적으로 스프링 보안은 매개 변수와 일치 할 수없는 개미 스타일 매칭을 사용합니다. 그러나 정규식 일치는 매개 변수와 일치 할 수 있습니다.

    다음과 같이 정의 해보십시오.

    <http request-matcher="regex">
      <security:intercept-url pattern="\A/userses\?form.*\Z" access="hasRole('ROLE_ADMIN')" />
    </http>
    

    Roo가 자동으로이 작업을 수행하지 않는 이유를 모릅니다. 그것이해야하는 것처럼 보입니다.

  2. ==============================

    2.이 동작은 사용중인 "요청 - 일치 자"에 의해 정의됩니다. 설명서에 표시된대로 기본값은 AntPathRequestMatcher를 사용하도록 지정하는 "ant"이며, 대신 "Regex"인 RegexRequestMatcher입니다. javadocs (링크 된)는 전자가 요청의 "servletPath + pathInfo"와 일치하고 후자가 "servletPath + pathInfo + queryString"과 일치한다는 사실을 포함하여 matchers에 대한 세부 사항을 제공합니다.

    이 동작은 사용중인 "요청 - 일치 자"에 의해 정의됩니다. 설명서에 표시된대로 기본값은 AntPathRequestMatcher를 사용하도록 지정하는 "ant"이며, 대신 "Regex"인 RegexRequestMatcher입니다. javadocs (링크 된)는 전자가 요청의 "servletPath + pathInfo"와 일치하고 후자가 "servletPath + pathInfo + queryString"과 일치한다는 사실을 포함하여 matchers에 대한 세부 사항을 제공합니다.

  3. from https://stackoverflow.com/questions/10467930/spring-security-cannot-match-parameter-format by cc-by-sa and MIT license