Come a livello di codice di accesso da elemento nella sicurezza primavera
-
27-10-2019 - |
Domanda
Come posso programmazione accedere al contenuto delle dichiarazioni intercetta-url (dal http: // www. schema springframework.org/schema/security)? Per esempio,
<http auto-config='true'>
<intercept-url pattern="/static/**" filters="none" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/**" access="ROLE_USER" />
...
</http>
Mappatura ruolo di sicurezza a molla è usato per limitare l'accesso a determinate pagine. Voglio estrarre le stesse informazioni di mappatura ruolo ( modello e Accetta ??em> attributi) per essere in grado di mostrare solo le pagine del HTML-menu che ogni ruolo ha accesso a vedere .
Ho avuto uno sguardo al HttpConfigurationBuilder
, ma è pacchetto protetto e non sembra offrire così tante informazioni. Ho anche provato:
FilterSecurityInterceptor interceptor = appContext.getBean(FilterSecurityInterceptor.class);
if (interceptor != null) {
for (ConfigAttribute attr : interceptor.getSecurityMetadataSource().getAllConfigAttributes()) {
// Extract the attributes ...
attr.getAttribute();
}
}
ma ho solo riuscito a accedere ai ruoli, non i modelli di URL.
Soluzione
La configurazione dichiarato utilizzando un supporto dello spazio dei nomi non esiste nello stesso "format" dopo contesto di applicazione è stato caricato.
Se si desidera conservare le informazioni sulla mappatura ruolo, è necessario accedervi durante l'analisi della configurazione - e salvare i dati necessari per l'utilizzo futuro. È possibile effettuare questa operazione sottoclasse org.springframework.security.config.http.HttpSecurityBeanDefinitionParser
, leggendo i dati che si desidera e delegando a super
.
Primavera di sicurezza 3 -. Appendice D. Extensible XML authoring per l'utilizzo di implementazioni BeanDefinitionParser
personalizzati
Altri suggerimenti
Forse si può verificare se getFilterChainMap
() della classe FilterChainProxy
ti dà le informazioni pertinenti.