protected Authentication attemptExitUser ( HttpServletRequest request ) throws AuthenticationCredentialsNotFoundException { // need to check to see if the current user has a SwitchUserGrantedAuthority Authentication current = SecurityContextHolder . getContext ( ) . getAuthentication ( ) ; if ( null == current ) { throw new AuthenticationCredentialsNotFoundException ( this . messages . getMessage ( "SwitchUserFilter.noCurrentUser" , "No current user associated with this request" ) ) ; } // check to see if the current user did actual switch to another user // if so, get the original source user so we can switch back Authentication original = getSourceAuthentication ( current ) ; if ( original == null ) { this . logger . debug ( "Could not find original user Authentication object!" ) ; throw new AuthenticationCredentialsNotFoundException ( this . messages . getMessage ( "SwitchUserFilter.noOriginalAuthentication" , "Could not find original Authentication object" ) ) ; } // get the source user details UserDetails originalUser = null ; Object obj = original . getPrincipal ( ) ; if ( ( obj != null ) && obj instanceof UserDetails ) { originalUser = ( UserDetails ) obj ; } // publish event if ( this . eventPublisher != null ) { this . eventPublisher . publishEvent ( new AuthenticationSwitchUserEvent ( current , originalUser ) ) ; } return original ; }
Attempt to exit from an already switched user .