[SPRING] 봄 보안 : intercept-url 패턴 access = "# id == 1
SPRING봄 보안 : intercept-url 패턴 access = "# id == 1
내가 프로젝트를 가지고 아이엠 봄 보안 3.1.3 및 MVC 3.2
나는 경로에있는 userid에있는 wehen URL이 주 사용자 아이디와 일치하도록하고 싶다.
<security:intercept-url pattern="/user/{id}/edit" access="#id == principal.userId"/>
http use-expressions은 true로 설정하고 principal.userId == 1을 시도하면 작동하지만 url에서 추출한 값을 사용해야합니다.
이미 가능한 모든 조합을 시도했습니다.
해결법
-
==============================
1.그것은 불가능합니다. 그러나 다른 방법이 있습니다. URL에서 id 매개 변수의 추출을 담당 할 자체 웹 표현식을 정의 할 수 있습니다. 다음과 같이 보일 수 있습니다.
그것은 불가능합니다. 그러나 다른 방법이 있습니다. URL에서 id 매개 변수의 추출을 담당 할 자체 웹 표현식을 정의 할 수 있습니다. 다음과 같이 보일 수 있습니다.
<security:intercept-url pattern="/user/{id}/edit" access="getIdUrlPathParameter() == principal.userId"/>
그렇게하려면 다음이 필요합니다. 1. WebSecurityExpressionRoot를 확장하는 CustomWebSecurityExpressionRoot를 추가하십시오. 2. getIdUrlPathParameter () 메소드를 추가하십시오. HttpServletRequest 객체에 액세스 할 수 있습니다. 3. DefaultWebSecurityExpressionHandler를 확장하는 CustomWebSecurityExpressionHandler를 정의하십시오. createSecurityExpressionRoot 메서드를 재정의하십시오. 여기서 CustomWebSecurityExpressionRoot를 사용하십시오. 4. 사용자 지정 액세스 결정 관리자 (아래 XML) 정의 5. access-decision-manager-ref 속성을 통해 http 요소에 삽입하십시오.
<security:http access-decision-manager-ref="customAccessDecisionManagerBean" > <security:intercept-url pattern="/user/{id}/edit" access="getIdUrlPathParameter() == principal.userId"/> </security:http> <bean id="customWebSecurityExpressionHandler" class="com.domain.security.CustomWebSecurityExpressionHandler"/> <bean id="customAccessDecisionManagerBean" class="org.springframework.security.access.vote.AffirmativeBased"> <property name="decisionVoters"> <list> <bean class="org.springframework.security.web.access.expression.WebExpressionVoter"> <property name="expressionHandler" ref="customWebSecurityExpressionHandler" /> </bean> </list> </property> </bean>
-
==============================
2.Spring Security에서는이를 수행 할 수 없습니다.
Spring Security에서는이를 수행 할 수 없습니다.
from https://stackoverflow.com/questions/14185070/spring-securityintercept-url-pattern-access-id-1 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] ClassFile - ArchiveException을 빌드 할 수 없습니다. (0) | 2019.01.04 |
---|---|
[SPRING] 'transactionManager'라는 이름의 bean이 정의되지 않았습니다. (0) | 2019.01.04 |
[SPRING] Java 8을 사용하는 Spring 3.2.x (0) | 2019.01.04 |
[SPRING] 스프링 4 정적 리소스로드 (0) | 2019.01.04 |
[SPRING] 사용자 정의 제약 검사기에서 Autowired Repository가 Null입니다. (0) | 2019.01.04 |