Frühjahr: Aktivieren Sie die Globale Methode, die Sicherheit in der Controller-Schicht von java-config
Ich versuche zu migrieren meine xml-servlet-config java-config.
Den unter config ist meine servlet-Konfiguration, die es ermöglicht, benutzerdefinierte Sicherheits-Anmerkungen auf der Controller-Schicht.
<security:global-method-security pre-post-annotations="enabled">
<security:expression-handler ref="expressionHandler"/>
</security:global-method-security>
<bean id="expressionHandler" class="yyy.MyMethodSecurityExpressionHandler" />
Habe ich auch eine funktionierende spring security-xml-Konfiguration, um ersetzt zu werden durch java-config, aber nicht jetzt. Hier einige Stücke meiner Sicherheit 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" />
Will ich beginnen zu migrieren, meine servlet config aktivieren der Sicherheit @PreAuthorize
und @PostAuthorize
tag in der Controller-Schicht.
Habe ich gefunden, diese Anmerkung: @EnableGlobalMethodSecurity(prePostEnabled=true)
, sondern setzen es auf meinem servlet config:
@Configuration
@ComponentScan(basePackages= {
"....."
})
@EnableGlobalMethodSecurity(prePostEnabled=true)
public class WebappServletConfig extends WebMvcConfigurationSupport {
Bekomme ich diese exception:
java.lang.IllegalArgumentException: Expecting to only find a single bean for type interface org.springframework.security.authentication.AuthenticationManager, but found []
Außerdem weiß ich nicht, wie ich meinen benutzerdefinierten Ausdruck-handler!
jemand ein paar Tipps? Danke
InformationsquelleAutor gipinani | 2014-02-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update (nach der aktualisierten Frage)
Es scheint, man begegnet SEC-2479. Es gibt ein paar Möglichkeiten, um dieses. Die einfachste davon ist die Verwendung des Ergebnis der @Autowired für die AuthenticationManager. Um dies zu tun müssen Sie erweitern GlobalMethodSecurityConfiguration und überschreiben Sie die authenticationManager Methode.
Ursprüngliche Antwort
Müssen Sie konfigurieren, irgendeine Art von Authentifizierung. Also Sie müssen Folgendes haben:
Sofern Sie nicht über die web-basierte Sicherheit, die reference enthält ein Beispiel, wie Sie die Methode konfigurieren, Sicherheit Ausdruck handler.
Wenn Sie nur wollen, eine benutzerdefinierte Methode Ausdruck handler, um eine Erlaubnis evaluator, dann brauchen Sie nur zum erstellen eines PermissionEvaluator Bohne wie diese:
Wie haben Sie definieren Ihre AuthenticationManager?
Ich aktualisiert meine Frage
InformationsquelleAutor Rob Winch
zunächst benötigen Sie eine separate Konfiguration Klasse wie
wo Sie brauchen, um zu definieren,
helfen sollen, mit Ihrer Ausnahme.
Ich bin nicht sicher, wie Sie Sie konfigurieren expressionHandler, aber es scheint Sie können Sie modifizieren, konfigurieren(WebSecurity web)
danke für deine Antwort. Ich habe bereits eine spring security-Konfiguration wird im xml-Format. Es wird übersetzt, aber nicht jetzt. Ich wan nicht nur zu erweitern, Pre/Post Autorisieren tags Controller-Schicht..
InformationsquelleAutor freakman