web/src/main/java/org/springframework/security/web/servletapi/SecurityContextHolderAwareRequestWrapper.java
@Override
	public String getRemoteUser() {
		Authentication auth = getAuthentication();

		if ((auth == null) || (auth.getPrincipal() == null)) {
			return null;
		}

		if (auth.getPrincipal() instanceof UserDetails) {
			return ((UserDetails) auth.getPrincipal()).getUsername();
		}

		return auth.getPrincipal().toString();
	}
@Override
	public String getRemoteUser() {
		Authentication auth = getAuthentication();

		if ((auth == null) || (auth.getPrincipal() == null)) {
			return null;
		}

		if (auth.getPrincipal() instanceof UserDetails) {
			return ((UserDetails) auth.getPrincipal()).getUsername();
		}

		return auth.getPrincipal().toString();
	}
@ Override public String getRemoteUser ( ) { Authentication auth = getAuthentication ( ) ; if ( ( auth == null ) || ( auth . getPrincipal ( ) == null ) ) { return null ; } if ( auth . getPrincipal ( ) instanceof UserDetails ) { return ( ( UserDetails ) auth . getPrincipal ( ) ) . getUsername ( ) ; } return auth . getPrincipal ( ) . toString ( ) ; }
Returns the principal's name, as obtained from the
<code>SecurityContextHolder</code>. Properly handles both <code>String</code>-based
and <code>UserDetails</code>-based principals.

@return the username or <code>null</code> if unavailable
Returns the principal s name as obtained from the <code > SecurityContextHolder< / code > . Properly handles both <code > String< / code > - based and <code > UserDetails< / code > - based principals .