[SPRING] Spring Security를 사용하여 특정 URL 패턴의 보안을 구분하기 위해 HTTP 메소드 (예 : GET, PUT, POST)를 사용하려면 어떻게해야합니까?
SPRINGSpring Security를 사용하여 특정 URL 패턴의 보안을 구분하기 위해 HTTP 메소드 (예 : GET, PUT, POST)를 사용하려면 어떻게해야합니까?
스프링시 보안 참조는 다음과 같이 설명한다.
URL 패턴에 접근하는 데 사용되는 HTTP 메소드에 따라 특정 URL 패턴에 대한 액세스가 다르게 보안되도록 Spring Security를 어떻게 구성 할 수 있습니까?
해결법
-
==============================
1.이것은 단지 구성에 관한 것입니다.
요소는 구성 파일의 태그에서 위에서 아래로 평가됩니다. 이것은 단지 구성에 관한 것입니다.
요소는 구성 파일의 태그에서 위에서 아래로 평가됩니다. <http auto-config="true"> <intercept-url pattern="/**" access="isAuthenticated" /> <intercept-url pattern="/login.jsp" access="permitAll" /> </http>
위의 예에서 인증 된 사용자 만 로그인 페이지 (사용자가 먼저 로그인해야합니다.)를 제외한 모든 항목에 액세스 할 수 있습니다. 그러나 문서에 따르면, 이는 덜 구체적인 일치가 위에 있기 때문에 작동하지 않습니다. 따라서이 예제의 목표를 달성하기위한 올바른 구성 중 하나는 다음과 같습니다.
<http auto-config="true"> <intercept-url pattern="/login.jsp" access="permitAll" /> <intercept-url pattern="/**" access="isAuthenticated" /> </http>
더 구체적인 경기를 맨 위에 놓습니다.
따옴표가 말한 마지막 것은 HTTP 메소드에 관한 것입니다. 일치 항목을 지정하는 데 사용할 수 있으므로 다음을 수행 할 수 있습니다.
<http auto-config="true"> <intercept-url pattern="/client/edit" access="isAuthenticated" method="GET" /> <intercept-url pattern="/client/edit" access="hasRole('EDITOR')" method="POST" /> </http>
이 두 번째 예제에서 GET을 통해 / client / edit에 액세스하려면 사용자는 인증 만 받으면되지만 POST를 통해 / client / edit에 액세스하려면 (EDITOR 역할을 가져야 함). 그 URL 패턴은 일부 장소에서 권장되지 않을 수도 있지만 단지 예일뿐입니다.
-
==============================
2.Java 어노테이션 기반 구성을 선호하는 경우이 클래스를 응용 프로그램에 드롭하십시오.
Java 어노테이션 기반 구성을 선호하는 경우이 클래스를 응용 프로그램에 드롭하십시오.
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers(HttpMethod.GET).permitAll(); http.authorizeRequests().antMatchers(HttpMethod.POST).denyAll(); http.authorizeRequests().antMatchers(HttpMethod.DELETE,"/you/can/alsoSpecifyAPath").denyAll(); http.authorizeRequests().antMatchers(HttpMethod.PATCH,"/path/is/Case/Insensitive").denyAll(); http.authorizeRequests().antMatchers(HttpMethod.PUT,"/and/can/haveWildcards/*").denyAll(); } }
다음 Maven 종속성을 사용하십시오 (이전 버전의 Spring-Security도 작동해야 함).
<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>5.0.0.M3</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>5.0.0.M3</version> </dependency>
from https://stackoverflow.com/questions/7347183/using-spring-security-how-can-i-use-http-methods-e-g-get-put-post-to-disti by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 보안 + MVC : 동일한 @RequestMapping, 다른 @Secured (0) | 2019.02.10 |
---|---|
[SPRING] 열거 형으로 봄 MVC에서 선택하십시오. (0) | 2019.02.10 |
[SPRING] 어노테이션 기반 ServiceLocatorFactoryBean? (0) | 2019.02.10 |
[SPRING] 어떻게 thymeleaf와 spring을 사용하여리스트를 드롭 다운할까요? (0) | 2019.02.10 |
[SPRING] Spring 부트에서 replace 대신 많은 application.properties 파일을 병합 하시겠습니까? (0) | 2019.02.10 |