Browse Source

Add userDetailsMapper as a class member

Signed-off-by: dae won <eodnjs01477@gmail.com>
dae won 6 months ago
parent
commit
6ac3426e39

+ 9 - 1
core/src/main/java/org/springframework/security/provisioning/JdbcUserDetailsManager.java

@@ -30,6 +30,7 @@ import org.springframework.context.ApplicationContextException;
 import org.springframework.core.log.LogMessage;
 import org.springframework.dao.IncorrectResultSizeDataAccessException;
 import org.springframework.jdbc.core.PreparedStatementSetter;
+import org.springframework.jdbc.core.RowMapper;
 import org.springframework.security.access.AccessDeniedException;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -156,6 +157,8 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
 
 	private UserCache userCache = new NullUserCache();
 
+	private RowMapper<UserDetails> userDetailsMapper = this::mapToUser;
+
 	public JdbcUserDetailsManager() {
 	}
 
@@ -163,6 +166,11 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
 		setDataSource(dataSource);
 	}
 
+	public void setUserDetailsMapper(RowMapper<UserDetails> mapper) {
+		Assert.notNull(mapper, "userDetailsMapper cannot be null");
+		this.userDetailsMapper = mapper;
+	}
+
 	@Override
 	protected void initDao() throws ApplicationContextException {
 		if (this.authenticationManager == null) {
@@ -178,7 +186,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
 	 */
 	@Override
 	protected List<UserDetails> loadUsersByUsername(String username) {
-		return getJdbcTemplate().query(getUsersByUsernameQuery(), this::mapToUser, username);
+		return getJdbcTemplate().query(getUsersByUsernameQuery(), userDetailsMapper, username);
 	}
 
 	protected UserDetails mapToUser(ResultSet rs, int rowNum) throws SQLException {