Răsfoiți Sursa

SEC-720: Design for extension: PreAuthenticatedGrantedAuthoritiesUserDetailsService
http://jira.springframework.org/browse/SEC-720. Added createUserDetails method to allow custom UserDetails object t be created.

Luke Taylor 17 ani în urmă
părinte
comite
8f379768a8

+ 13 - 4
core/src/main/java/org/springframework/security/providers/preauth/PreAuthenticatedGrantedAuthoritiesUserDetailsService.java

@@ -34,12 +34,21 @@ public class PreAuthenticatedGrantedAuthoritiesUserDetailsService implements Aut
 	 * GrantedAuthoritiesContainer implementation as returned by
 	 * the token.getDetails() method.
 	 */
-	public UserDetails loadUserDetails(Authentication token) throws AuthenticationException {
+	public final UserDetails loadUserDetails(Authentication token) throws AuthenticationException {
 		Assert.notNull(token.getDetails());
 		Assert.isInstanceOf(GrantedAuthoritiesContainer.class, token.getDetails());
-		GrantedAuthority[] preAuthenticatedGrantedAuthorities = ((GrantedAuthoritiesContainer) token.getDetails())
-				.getGrantedAuthorities();
-		UserDetails ud = new User(token.getName(), "N/A", true, true, true, true, preAuthenticatedGrantedAuthorities);
+		GrantedAuthority[] authorities = ((GrantedAuthoritiesContainer) token.getDetails()).getGrantedAuthorities();
+		UserDetails ud = createuserDetails(token, authorities);
 		return ud;
 	}
+	
+	/**
+	 * Creates the final <tt>UserDetails</tt> object. Can be overridden to customize the contents.
+	 * 
+	 * @param token the authentication request token
+	 * @param authorities the pre-authenticated authorities.
+	 */
+	protected UserDetails createuserDetails(Authentication token, GrantedAuthority[] authorities) {
+		return new User(token.getName(), "N/A", true, true, true, true, authorities);
+	}
 }