복붙노트

[SPRING] 봄 보안에 차단 - URL 패턴 주문

SPRING

봄 보안에 차단 - URL 패턴 주문

appSecurity.xml에서 나는이있다 :

차단 - URL 패턴 = "/ 사용자 / 프로필 / **"액세스 = "hasRole ( 'VIEW_PROFILES')".

차단 - URL 패턴 = "/ 사용자 / 프로필 / 편집 / **"액세스 = "hasRole ( 'EDIT_PROFILES')"

나는 페이지 / 사용자 / 프로필 / 편집 / addnew 가지고 역할 VIEW_PROFILES와 사용자가이 페이지에 액세스하려고 할 때, 그는 성공적으로 얻을 수 있지만 역할이 사용자에 대한 접근이 차단 EDIT_PROFILES.

내가 무슨 일을하고 있어요?

해결법

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

    1.이후 "/ 사용자 / 프로필 / 편집 /" "/ 사용자 / 프로필 /"보다 더 구체적이고,이 목록의 상위에 위치해야합니다.

    이후 "/ 사용자 / 프로필 / 편집 /" "/ 사용자 / 프로필 /"보다 더 구체적이고,이 목록의 상위에 위치해야합니다.

    출처 : 핵심 보안 필터

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

    2.존 패럴리와 Ritesh 모두 정확합니다. 절편-URL 패턴은 나열된 순서대로 일치합니다. 즉시 일치하는 항목이 발견 될 때, 지정된 패턴의 나머지는 무시됩니다. 이전보다 구체적인 패턴을 나열해야하는 이유입니다.

    존 패럴리와 Ritesh 모두 정확합니다. 절편-URL 패턴은 나열된 순서대로 일치합니다. 즉시 일치하는 항목이 발견 될 때, 지정된 패턴의 나머지는 무시됩니다. 이전보다 구체적인 패턴을 나열해야하는 이유입니다.

    귀하의 경우, 대한 / 사용자 / 프로필 / 편집 / somepage 패턴은 최초의 요격 - URL 패턴에 지정된 패턴과 일치하는, 그래서 봄은 적절하게 해당 사용자가 지정한 액세스 역할이 있는지 확인하고 있습니다. 분명히, 당신의 EDIT_PROFILES 사용자는 VIEW_PROFILES 권한을 가지고 있지 않기 때문에 그들은 액세스가 거부되고있다. 마찬가지로, 당신의 의도는 EDIT_PROFILES 기관이 VIEW_PROFILES 권한이있는 사용자에게 액세스 권한을 부여 이전 문에 의해 훼손되고있는 사용자에 ../edit/에 대한 액세스를 제한 할 수 있습니다.

    쉽게 수정을위한 순서를 전환하고 당신은 아마 (EDIT_PROFILES 기관에 추가로) 당신의 EDIT_PROFILES 사용자 VIEW_PROFILES 권한을주고 싶다. 그런 다음, 액세스 문을 단순화하기 위해, 액세스 = "hasAnyRole ( 'REQUIRED_ROLE')"보다는 접근 = "hasRole ( 'REQUIRED_ROLE을')"사용하는 것이 좋습니다.

  3. ==============================

    3.당신의 EDIT_PROFILES 규칙이 VIEW_PROFILES 규칙 위에 있는지 확인합니다. 당신이 VIEW_PROFILES에 대한 표현을 살펴 경우, 당신은 EDIT_PROFILES을 일치합니다 모든 URL이 포함되어 있음을 볼 수 있습니다. 즉, VIEW_PROFILES 규칙이 처음 인 경우, 스프링 보안이 EDIT_PROFILES 규칙을하려고 귀찮게하지 않습니다 것을 의미합니다.

    당신의 EDIT_PROFILES 규칙이 VIEW_PROFILES 규칙 위에 있는지 확인합니다. 당신이 VIEW_PROFILES에 대한 표현을 살펴 경우, 당신은 EDIT_PROFILES을 일치합니다 모든 URL이 포함되어 있음을 볼 수 있습니다. 즉, VIEW_PROFILES 규칙이 처음 인 경우, 스프링 보안이 EDIT_PROFILES 규칙을하려고 귀찮게하지 않습니다 것을 의미합니다.

  4. from https://stackoverflow.com/questions/15998746/order-of-intercept-url-patterns-in-spring-security by cc-by-sa and MIT license