зеркало из
				https://github.com/iharh/notes.git
				synced 2025-11-04 15:46:08 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			63 строки
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			63 строки
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
https://docs.spring.io/autorepo/docs/spring-security/3.0.x/apidocs/org/springframework/security/core/context/SecurityContextHolder.html
 | 
						|
    ? setStrategyName
 | 
						|
 | 
						|
Authentication - Principal
 | 
						|
GrantedAuthority(Roles)
 | 
						|
UserDetails - necessary info for building "Authentication object"
 | 
						|
    from application DAO-objects or from other sources
 | 
						|
    has name, pwd, class, isEnabled and other isNNNN stuff...
 | 
						|
UserDetailsService with only one method
 | 
						|
    org.springframework.security.core.userdetails.UserDetailsService;
 | 
						|
    UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
 | 
						|
 | 
						|
    .../applicationContext-spring-security.xml
 | 
						|
        <bean id="userDetailsService" class="...common.security.spring.UserDetailsServiceImpl">
 | 
						|
 | 
						|
import org.springframework.security.access.intercept.RunAsUserToken;
 | 
						|
import org.springframework.security.authentication.CredentialsExpiredException;
 | 
						|
import org.springframework.security.core.context.SecurityContextHolder;
 | 
						|
 | 
						|
import ...Role;
 | 
						|
import ...User;
 | 
						|
import ...SomeAuthenticationToken;
 | 
						|
 | 
						|
public final class SecurityContext {
 | 
						|
    private SecurityContext() {
 | 
						|
    }
 | 
						|
 | 
						|
    public static User getUser() {
 | 
						|
        return (isAuthenticated()) ? getUserDetails().getUser() : null;
 | 
						|
    }
 | 
						|
 | 
						|
    public static boolean isAuthenticated() {
 | 
						|
        return isAuthenticated(SecurityContextHolder.getContext());
 | 
						|
    }
 | 
						|
    
 | 
						|
    public static boolean isAuthenticated(org.springframework.security.core.context.SecurityContext context) {
 | 
						|
        return context != null && context.getAuthentication() != null 
 | 
						|
                        && context.getAuthentication().getPrincipal() instanceof UserDetailsImpl;
 | 
						|
    }
 | 
						|
 | 
						|
    public static boolean isAuthenticatiedBySomeToken() {
 | 
						|
        return isAuthenticated() && SecurityContextHolder.getContext().getAuthentication() instanceof SomeAuthenticationToken;
 | 
						|
    }
 | 
						|
 | 
						|
    private static UserDetailsImpl getUserDetails() {
 | 
						|
        final Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
 | 
						|
        if (principal instanceof UserDetailsImpl) {
 | 
						|
            return (UserDetailsImpl) principal;
 | 
						|
        } else {
 | 
						|
            log.debug("Principal is " + principal);
 | 
						|
            throw new CredentialsExpiredException("Authentication failed");
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public static void changeCurrentUser(User user, List<Role> roles) {
 | 
						|
        UserDetailsImpl userDetailsImpl  = new UserDetailsImpl(user, roles.toArray(new Role[] {}));
 | 
						|
        RunAsUserToken authToken = new RunAsUserToken(userDetailsImpl.toString(), userDetailsImpl, userDetailsImpl, null, RunAsUserToken.class);
 | 
						|
 | 
						|
        SecurityContextHolder.getContext().setAuthentication(authToken);
 | 
						|
    }
 | 
						|
    ...
 | 
						|
}
 |