Преглед на файлове

Make UserBuilder.username public

This allows for reusing a UserBuilder to create multiple UserDetails with
similar attributes but different usernames.

Fixes gh-4453
Rob Winch преди 8 години
родител
ревизия
0b481cf4b6
променени са 1 файла, в които са добавени 17 реда и са изтрити 2 реда
  1. 17 2
      core/src/main/java/org/springframework/security/core/userdetails/User.java

+ 17 - 2
core/src/main/java/org/springframework/security/core/userdetails/User.java

@@ -244,8 +244,23 @@ public class User implements UserDetails, CredentialsContainer {
 		return sb.toString();
 	}
 
+	/**
+	 * Creates a UserBuilder with a specified user name
+	 *
+	 * @param username the username to use
+	 * @return the UserBuilder
+	 */
 	public static UserBuilder withUsername(String username) {
-		return new UserBuilder().username(username);
+		return builder().username(username);
+	}
+
+	/**
+	 * Creates a UserBuilder
+	 *
+	 * @return the UserBuilder
+	 */
+	public static UserBuilder builder() {
+		return new UserBuilder();
 	}
 
 	public static UserBuilder withUserDetails(UserDetails userDetails) {
@@ -284,7 +299,7 @@ public class User implements UserDetails, CredentialsContainer {
 		 * @return the {@link UserBuilder} for method chaining (i.e. to populate
 		 * additional attributes for this user)
 		 */
-		private UserBuilder username(String username) {
+		public UserBuilder username(String username) {
 			Assert.notNull(username, "username cannot be null");
 			this.username = username;
 			return this;