Comment élément programme accès de dans la sécurité du printemps
-
27-10-2019 - |
Question
Comment puis-je accéder par programmation le contenu des déclarations interception url (de la http: // www. springframework.org/schema/security schéma )? Par exemple,
<http auto-config='true'>
<intercept-url pattern="/static/**" filters="none" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/**" access="ROLE_USER" />
...
</http>
cartographie rôle de sécurité Spring est utilisé pour restreindre l'accès à certaines pages. Je veux extraire les mêmes informations de cartographie de rôle pour être en mesure de montrer que ces pages dans le menu html ( modèle et acceptent attributs) que chaque rôle a accès à voir .
J'ai eu un coup d'œil à la HttpConfigurationBuilder
, mais ce paquet est protégé et ne semble pas offrir beaucoup d'informations. J'ai aussi essayé:
FilterSecurityInterceptor interceptor = appContext.getBean(FilterSecurityInterceptor.class);
if (interceptor != null) {
for (ConfigAttribute attr : interceptor.getSecurityMetadataSource().getAllConfigAttributes()) {
// Extract the attributes ...
attr.getAttribute();
}
}
mais je ne réussi à accéder aux rôles, et non pas les modèles d'URL.
La solution
La configuration déclaré à l'aide d'un support d'espace de noms n'existe pas dans le même « format » après contexte d'application est chargé.
Si vous souhaitez conserver les informations de mappage de rôle, vous devez y accéder lors de l'analyse de configuration - et sauvegarder les données dont vous avez besoin pour l'utilisation future. Vous pouvez le faire en sous-classement org.springframework.security.config.http.HttpSecurityBeanDefinitionParser
, la lecture des données que vous voulez et déléguer à super
.
Voir Spring Security 3 -. Annexe D. XML Extensible authoring pour l'utilisation des implémentations BeanDefinitionParser
personnalisé
Autres conseils
Peut-être que vous pouvez vérifier si la méthode de getFilterChainMap
() de la classe de FilterChainProxy
vous donne les informations pertinentes.