[SPRING] 데이터베이스 나 속성으로부터 Spring 보안 인터셉트 URL 가져 오기
SPRING데이터베이스 나 속성으로부터 Spring 보안 인터셉트 URL 가져 오기
바라기를 이것은 아주 간단하고, 존재하고, 나는 코의 바로 아래 뭔가를 내려다보고 있습니다. 주석을 통해 액세스를 제한 할 수 있다는 것을 알고 있습니다.
@Secured({"ROLE_ADMIN"})
또는 설정을 통해 :
<security:intercept-url pattern="/**" access="ROLE_USER, ROLE_ADMIN, ROLE_SUPER_USER" />
데이터베이스와 같은 인증 규칙을 얻는 것을 선호합니다.
<security:intercept-url provider="authProvider"/>
<bean id="authProvider" class="AuthProviderImpl">
<property name="userDetailsService" ref="userDetailsService"/>
</bean>
최악의 시나리오는 속성 파일을 통해 채울 수있는 방법이 있어야합니다. ...
/ admin / ** = ROLE_ADMIN / ** = ROLE_USER
<security:intercept-url props="classpath:urls.properties"/>
기타
이것이 존재하는지 아니면 내 뇌가 폭발할지 말해주세요! Grails spring-security plugin은이 패키지와 함께 제공되기 때문에 이것이 존재해야한다는 것을 알고 있습니다. 제 뇌가 폭발하지 않도록하십시오 !!!
편집하다:
그것을 알아 낸 ...
사용자 정의 org.springframework.security.intercept.web.FilterSecurityInterceptor를 제공하고 objectDefinitionSource를 제공해야합니다.
<bean id="filterSecurityInterceptor" class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
<security:custom-filter before="FILTER_SECURITY_INTERCEPTOR" />
<property name="authenticationManager" ref="authenticationManager" />
<property name="accessDecisionManager" ref="accessDecisionManager" />
<property name="objectDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/**login.html=IS_AUTHENTICATED_ANONYMOUSLY
/user/**=ROLE_ADMIN
</value>
</property>
</bean>
FactoryBean을 사용하려고합니다.
public class RequestMappingFactoryBean implements FactoryBean {
private final static String EOL = System.getProperty("line.separator");
public Object getObject() throws Exception {
StringBuffer sb = new StringBuffer();
sb.append("CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON");
sb.append(EOL);
sb.append("PATTERN_TYPE_APACHE_ANT");
sb.append(EOL);
sb.append("/**login.html=IS_AUTHENTICATED_ANONYMOUSLY");
sb.append(EOL);
sb.append("/user/**=ROLE_ADMIN");
return sb.toString();
}
@SuppressWarnings("unchecked")
public Class getObjectType() {
return String.class;
}
public boolean isSingleton() {
return true;
}
}
DAO 등을 전달하십시오.
<bean id="filterSecurityInterceptor" class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
<security:custom-filter before="FILTER_SECURITY_INTERCEPTOR" />
<property name="authenticationManager" ref="authenticationManager" />
<property name="accessDecisionManager" ref="accessDecisionManager" />
<property name="objectDefinitionSource" ref="requestMappings" />
</bean>
<bean id="requestMappings" class="RequestMappingFactoryBean" />
해결법
-
==============================
1.그것은 오래되었지만 URL에 대한 액세스 허용 여부를 결정하는 데 도움이되는 Voter 객체를 만들 수 있습니다. 유권자 객체는 데이터베이스 또는 파일에서 데이터를로드하거나 무작위로 Allow, Deny 또는 Abstain을 반환 할 수 있습니다.
그것은 오래되었지만 URL에 대한 액세스 허용 여부를 결정하는 데 도움이되는 Voter 객체를 만들 수 있습니다. 유권자 객체는 데이터베이스 또는 파일에서 데이터를로드하거나 무작위로 Allow, Deny 또는 Abstain을 반환 할 수 있습니다.
-
==============================
2.당신이 봄 xml에서 이런 식으로 뭔가를 사용 하시겠습니까?
당신이 봄 xml에서 이런 식으로 뭔가를 사용 하시겠습니까?
<!-- Settings --> <b:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <b:property name="locations"> <b:value>/WEB-INF/config.properties</b:value> </b:property> </b:bean>
그리고 나서 Spring XML에도 포함되어있다.
<http entry-point-ref="authenticationProcessingFilterEntryPoint"> <intercept-url pattern='/custom/**' access="${roles.admin}"/> </http>
from https://stackoverflow.com/questions/2315873/get-spring-security-intercept-urls-from-database-or-properties by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] JSONException : org.hibernate.LazyInitializationException Spring struts에서 최대 절전 모드 응용 프로그램 (0) | 2019.02.16 |
---|---|
[SPRING] Spring Security 3.2, CSRF 및 다중 요청 (0) | 2019.02.16 |
[SPRING] 스프링 mvc 중첩 모델 유효성 검사 (0) | 2019.02.16 |
[SPRING] 프로필에 따라 Spring에서 속성 파일로드 (0) | 2019.02.16 |
[SPRING] 봄 부팅 - SMTP 호스트에 연결할 수 없습니다 : smtp.gmail.com, 포트 : 25, 응답 : 421 (0) | 2019.02.16 |