2012-11-21 103 views
0

我正在使用spring安全性進行用戶身份驗證。指定自定義身份驗證提供程序

我已經創建了一個自定義身份驗證提供程序和UserDetails接口的實現。

以下是應用程序的context.xml

<beans:bean id="authenticationProvider" class="com.utils.UserAuthenticationProvider" > 
</beans:bean> 

<beans:bean id="passwordEncoder" class="com.utils.PasswordUtil"/> 
<beans:bean id="saltSource" class="org.springframework.security.authentication.dao.ReflectionSaltSource"> 
    <beans:property name="userPropertyToUse" value="lastChangeDate" /> 
</beans:bean> 

<authentication-manager alias="authenticationManager" > 
    <authentication-provider user-service-ref="userDetailsService" > 
     <password-encoder ref="passwordEncoder"> 
      <salt-source ref="saltSource" /> 
     </password-encoder> 
    </authentication-provider> 
</authentication-manager> 
<beans:bean id="userDetailsService" class="com.service.impl.UserDetailsServiceImpl" /> 

我無法將我的自定義的驗證提供認證管理器標籤。

我試過使用「custom-authenitication-provider」標籤,但似乎這個標籤在Spring 3以後不存在。

請幫忙。讓我知道是否有任何進一步的信息reqd

+1

[spring-security-custom-authentication-and-password-encoding]可能的重複(http://stackoverflow.com/questions/7658853/spring-security-custom-authentication-and-password-encoding) – Ravi

回答

0

您可以嘗試以下方式。

<bean id="authenticationFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter" 
     p:authenticationManager-ref="customAuthenticationManager" 
     p:authenticationFailureHandler-ref="customAuthenticationFailureHandler" 
     p:authenticationSuccessHandler-ref="customAuthenticationSuccessHandler" 
       p:sessionAuthenticationStrategy-ref="sas"/> 

    <bean id="customAuthenticationManager" class="com.xxx.yyy.zzz.security.filters.CustomAuthenticationFilter"> 
     <constructor-arg type="org.hibernate.SessionFactory" ref="sessionFactory"/> 
    </bean> 

- 編輯 -

如果你只是想使用的自定義身份驗證提供您可以指定它下面的方式。

<security:authentication-manager> 
     <security:authentication-provider ref="authenticationProvider"> 
     </security:authentication-provider> 
    </security:authentication-manager> 

希望這可以幫助你。乾杯。

+0

I不想創建新的身份驗證管理器。我只想引用我創建的auth提供程序。 –

+0

請參閱我答案的編輯部分。 –

+0

我試過這種方法,但方法的問題是我不能指定user-service-ref屬性,我想這樣做,因爲我想在使用自定義創建的加密算法對匹配密碼和數據庫之前加密傳入密碼。 –

相關問題