2016-03-25 7 views
1

Ich habe gerade erst von Spring Security 3 auf 4 aktualisiert und meine @AuthenticationPrincipal kommentierten Eingabeargumente in Controllern sind jetzt leer. Ich habe es geschafft, mit dem veralteten org.springframework.security.web.bind.annotation.AuthenticationPrincipal umgehen, aber wenn das eine aus dem org.springframework.security.core.annotation-Paket verwendet wird, ist es leer.Spring Security 4 @AuthenticationPrincipal leer mit core.annotation.AuthenticationPrincipal, aber nicht web.bind.annotation.AuthenticationPrincipal

Es wird auch funktionieren, wenn ich tun:
User activeUser = (User) ((Authentication) principal).getPrincipal();

Ich folgte dem Migrationsleitfaden, so gut ich konnte.

Hier ist mein spring-security.xml:

<beans:beans xmlns="http://www.springframework.org/schema/security" 
xmlns:beans="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.0.xsd"> 

<!-- enable use-expressions --> 
<http auto-config="false" use-expressions="true"> 
    <intercept-url pattern="/secure/admin**" access="hasAnyRole('ROLE_ADMIN', 'ROLE_SUPER_ADMIN')" /> 
    <intercept-url pattern="/secure/admin/**" access="hasAnyRole('ROLE_ADMIN', 'ROLE_SUPER_ADMIN')" /> 
    <intercept-url pattern="/secure/user**" access="isAuthenticated()" /> 
    <intercept-url pattern="/secure/user/**" access="isAuthenticated()" /> 
    <intercept-url pattern="/**" access="permitAll" /> 

    <form-login login-page="/login" 
     authentication-success-handler-ref="redirectRoleStrategy" 
     authentication-failure-url="/login?error" 
     username-parameter="username" 
     password-parameter="password" 
     login-processing-url="/auth/login_check" /> 

    <logout logout-success-url="/login?logout" delete-cookies="JSESSIONID" /> 
    <csrf disabled="true" /> 
</http> 

<beans:bean id='userDetailsService' class='com.myproject.security.UserDetailsServiceImpl' /> 

<beans:bean id="authenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider"> 
    <beans:property name="userDetailsService" ref="userDetailsService"/> 
</beans:bean> 

<beans:bean id='authenticationManager' class='org.springframework.security.authentication.ProviderManager'> 
    <beans:constructor-arg> 
     <beans:list> 
      <beans:ref bean='authenticationProvider' /> 
     </beans:list> 
    </beans:constructor-arg> 
</beans:bean> 

<!-- Select users and user_roles from database --> 
<authentication-manager> 
    <authentication-provider user-service-ref='userDetailsService'> 
     <password-encoder ref="encoder" /> 
    </authentication-provider> 
</authentication-manager> 

<beans:bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"> 
    <beans:constructor-arg name="strength" value="10" /> 
</beans:bean> 

<beans:bean id="redirectRoleStrategy" class="com.myproject.security.RoleBasedAuthenticationSuccessHandler"> 
    <beans:property name="roleUrlMap"> 
     <beans:map> 
      <beans:entry key="ROLE_ADMIN" value="/secure/admin"/> 
      <beans:entry key="ROLE_SUPER_ADMIN" value="/secure/admin"/> 
     </beans:map> 
    </beans:property> 
</beans:bean> 

+0

Wie sieht Ihre Spring MVC-Konfiguration aus? –

+0

Mögliches Duplikat von http://stackoverflow.com/questions/36219009/spring-security-deprecated-authenticationprincipal/36221381#36221381 –

Antwort

0

Habe ich es einfach aus. Es ist in der Tat ein Duplikat von Spring Security deprecated @AuthenticationPrincipal. Leider ist es nie gelungen, diesen Beitrag zu finden.

Ich änderte

<mvc:annotation-driven> 
    <mvc:argument-resolvers> 
     <bean class="org.springframework.security.web.bind.support.AuthenticationPrincipalArgumentResolver" /> 
    </mvc:argument-resolvers> 
</mvc:annotation-driven> 

Um

<mvc:annotation-driven> 
    <mvc:argument-resolvers> 
     <bean class="org.springframework.security.web.method.annotation.AuthenticationPrincipalArgumentResolver" /> 
    </mvc:argument-resolvers> 
</mvc:annotation-driven> 

In meinem applicationContext.xml.

Verwandte Themen