Printemps: Activer la méthode globale de la sécurité dans la couche Contrôleur par java config
Je suis en train de migrer mon xml servlet de configuration de java config.
La config ci-dessous est mon servlet de configuration, qui permet de sécurité personnalisé annotations sur la couche Contrôleur.
<security:global-method-security pre-post-annotations="enabled">
<security:expression-handler ref="expressionHandler"/>
</security:global-method-security>
<bean id="expressionHandler" class="yyy.MyMethodSecurityExpressionHandler" />
J'ai également un travail de la sécurité printemps de configuration xml, c'est pour être remplacé par java config, mais pas maintenant. Voici quelques pièces de ma sécurité, config:
<bean id="authenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
<property name="userDetailsService" ref="userDetailsService" />
</bean>
<bean id="authenticationManager" class="org.springframework.security.authentication.ProviderManager">
<constructor-arg>
<ref bean="authenticationProvider"/>
</constructor-arg>
</bean>
<security:authentication-manager>
<security:authentication-provider user-service-ref="userDetailsService" />
</security:authentication-manager>
<security:global-method-security pre-post-annotations="enabled" />
Je veux commencer à migrer mon servlet config l'activation de la sécurité @PreAuthorize
et @PostAuthorize
balise dans la couche Contrôleur.
J'ai trouvé cette annotation: @EnableGlobalMethodSecurity(prePostEnabled=true)
, mais de le mettre sur mon servlet config:
@Configuration
@ComponentScan(basePackages= {
"....."
})
@EnableGlobalMethodSecurity(prePostEnabled=true)
public class WebappServletConfig extends WebMvcConfigurationSupport {
- Je obtenir cette exception:
java.lang.IllegalArgumentException: Expecting to only find a single bean for type interface org.springframework.security.authentication.AuthenticationManager, but found []
D'ailleurs, je ne sais pas comment mettre mon expression personnalisée-gestionnaire de!
quelqu'un avec quelques conseils? Merci
OriginalL'auteur gipinani | 2014-02-04
Vous devez vous connecter pour publier un commentaire.
Mise à jour (après mise à jour de question)
Il semble que vous rencontrez SEC-2479. Il ya quelques façons de contourner cela. Le plus simple est d'utiliser le résultat de @Autocâblés pour la AuthenticationManager. Pour ce faire, vous devez étendre GlobalMethodSecurityConfiguration et remplacer le authenticationManager méthode.
Réponse Originale À Cette Question
Vous devez configurer une sorte d'Authentification. De sorte que vous aurez besoin de ce qui suit:
Si vous n'êtes pas à l'aide basée sur le web de la sécurité, de la référence fournit un exemple de la façon de configurer le mode de sécurité gestionnaire d'expression.
Si vous souhaitez seulement une méthode personnalisée gestionnaire d'expression de fournir une autorisation de l'évaluateur, alors vous n'avez qu'à créer un PermissionEvaluator bean comme ceci:
Comment avez-vous défini votre AuthenticationManager?
J'ai mis à jour ma question
OriginalL'auteur Rob Winch
tout d'abord vous avez besoin d'une Configuration distincte de la classe comme
où vous avez besoin de définir
qui devraient vous aider avec votre exception.
Je ne suis pas sûr de la façon de configurer expressionHandler, mais il semble que vous pouvez modifier à configurer(WebSecurity web)
je vous remercie pour votre réponse. J'ai déjà un printemps de configuration de la sécurité qui est en xml. Il sera traduit, mais pas maintenant. Je wan pas seulement pour étendre Pré/Post Autoriser les balises de Contrôleur de couche..
OriginalL'auteur freakman