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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top