mirror of
				https://github.com/spring-projects/spring-security.git
				synced 2025-10-31 06:38:42 +00:00 
			
		
		
		
	Improve organisation of DaoAuthenticationProvider to facilitate subclassing.
This commit is contained in:
		
							parent
							
								
									fe91639b15
								
							
						
					
					
						commit
						ce712eaccf
					
				| @ -4,6 +4,7 @@ Changes in version 0.6 (2004-xx-xx) | ||||
| * Added feature so DaoAuthenticationProvider returns User in Authentication | ||||
| * Added AbstractIntegrationFilter.secureContext property for custom contexts | ||||
| * Refactored User to UserDetails interface | ||||
| * Improved organisation of DaoAuthenticationProvider to facilitate subclassing | ||||
| * Fixed Linux compatibility issues (directory case sensitivity etc) | ||||
| * Fixed AbstractProcessingFilter to handle servlet spec container differences | ||||
| * Documentation improvements | ||||
|  | ||||
| @ -231,10 +231,8 @@ public class DaoAuthenticationProvider implements AuthenticationProvider, | ||||
|             principalToReturn = user.getUsername(); | ||||
|         } | ||||
| 
 | ||||
|         // Ensure we return the original credentials the user supplied, | ||||
|         // so subsequent attempts are successful even with encoded passwords | ||||
|         return new UsernamePasswordAuthenticationToken(principalToReturn, | ||||
|             authentication.getCredentials(), user.getAuthorities()); | ||||
|         return createSuccessAuthentication(principalToReturn, authentication, | ||||
|             user); | ||||
|     } | ||||
| 
 | ||||
|     public boolean supports(Class authentication) { | ||||
| @ -246,6 +244,21 @@ public class DaoAuthenticationProvider implements AuthenticationProvider, | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Indicates whether the supplied <code>Authentication</code> object | ||||
|      * provided appropriate credentials. This method can be called several | ||||
|      * times throughout a single authentication request. | ||||
|      *  | ||||
|      * <P> | ||||
|      * Protected so subclasses can override. | ||||
|      * </p> | ||||
|      * | ||||
|      * @param authentication that was presented to the | ||||
|      *        <code>DaoAuthenticationProvider</code> for validation | ||||
|      * @param user that was loaded by the <code>AuthenticationDao</code> | ||||
|      * | ||||
|      * @return a boolean indicating whether the credentials were correct | ||||
|      */ | ||||
|     protected boolean isPasswordCorrect(Authentication authentication, | ||||
|         UserDetails user) { | ||||
|         Object salt = null; | ||||
| @ -258,6 +271,37 @@ public class DaoAuthenticationProvider implements AuthenticationProvider, | ||||
|             authentication.getCredentials().toString(), salt); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Creates a successful {@link Authentication} object. | ||||
|      *  | ||||
|      * <P> | ||||
|      * Protected so subclasses can override. This might be required if multiple | ||||
|      * credentials need to be placed into a custom <code>Authentication</code> | ||||
|      * object, such as a password as well as a ZIP code. | ||||
|      * </p> | ||||
|      *  | ||||
|      * <P> | ||||
|      * Subclasses will usually store the original credentials the user supplied | ||||
|      * (not salted or encoded passwords) in the returned | ||||
|      * <code>Authentication</code> object. | ||||
|      * </p> | ||||
|      * | ||||
|      * @param principal that should be the principal in the returned object | ||||
|      *        (defined by the {@link #forcePrincipalAsString} property) | ||||
|      * @param authentication that was presented to the | ||||
|      *        <code>DaoAuthenticationProvider</code> for validation | ||||
|      * @param user that was loaded by the <code>AuthenticationDao</code> | ||||
|      * | ||||
|      * @return the successful authentication token | ||||
|      */ | ||||
|     protected Authentication createSuccessAuthentication(Object principal, | ||||
|         Authentication authentication, UserDetails user) { | ||||
|         // Ensure we return the original credentials the user supplied, | ||||
|         // so subsequent attempts are successful even with encoded passwords | ||||
|         return new UsernamePasswordAuthenticationToken(principal, | ||||
|             authentication.getCredentials(), user.getAuthorities()); | ||||
|     } | ||||
| 
 | ||||
|     private UserDetails getUserFromBackend(String username) { | ||||
|         try { | ||||
|             return this.authenticationDao.loadUserByUsername(username); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user