![JAR search and dependency download from the Maven repository](/logo.png)
org.zodiac.autoconfigure.security.SecurityAuthenticationAutoConfiguration Maven / Gradle / Ivy
package org.zodiac.autoconfigure.security;
import java.util.Collection;
import java.util.Locale;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.core.userdetails.UserDetailsPasswordService;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.zodiac.autoconfigure.security.condition.ConditionalOnSecurityConfigEnabled;
import org.zodiac.commons.constants.Constants;
import org.zodiac.commons.util.Colls;
import org.zodiac.commons.util.ObjectUtil;
import org.zodiac.commons.util.lang.Strings;
@ConditionalOnSecurityConfigEnabled
@SpringBootConfiguration
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass(value = {org.springframework.security.core.Authentication.class, org.springframework.security.config.annotation.SecurityBuilder.class, org.zodiac.security.config.SecurityConfigInfo.class})
public class SecurityAuthenticationAutoConfiguration extends org.zodiac.security.config.SecurityAuthenticationConfigurer {
private final SecurityProperties securityProperties;
private final WebMvcProperties webMvcProperties;
public SecurityAuthenticationAutoConfiguration(SecurityConfigProperties securityConfigProperties,
SecurityProperties securityProperties, WebMvcProperties webMvcProperties) {
super(securityConfigProperties);
this.securityProperties = securityProperties;
this.webMvcProperties = webMvcProperties;
}
//@Bean(value = SecurityConstants.SPRING_SECURITY_MESSAGE_SOURCE_BEAN_NAME)
//@Bean
@Override
protected MessageSource messageSource() {
return super.messageSource();
}
@Bean
@Override
protected org.springframework.security.crypto.password.PasswordEncoder passwordEncoder() {
return super.passwordEncoder();
}
@Bean
@Override
protected org.springframework.security.core.userdetails.UserDetailsService
userDetailsService(ObjectProvider passwordEncoderProvider) {
return super.userDetailsService(passwordEncoderProvider);
}
@Bean
@Override
protected UserDetailsPasswordService
userDetailsPasswordService(ObjectProvider passwordEncoderProvider) {
return super.userDetailsPasswordService(passwordEncoderProvider);
}
@Bean
@Override
protected AuthenticationProvider authenticationProvider(ObjectProvider passwordEncoderProvider,
UserDetailsService userDetailsService, UserDetailsPasswordService userDetailsPasswordService,
@Autowired(required = false) MessageSource messageSource) {
return super.authenticationProvider(passwordEncoderProvider, userDetailsService, userDetailsPasswordService, messageSource);
}
@Override
protected Collection
obtainUserDetailsList(org.springframework.security.crypto.password.PasswordEncoder passwordEncoder) {
Collection userDetailsList =
super.obtainUserDetailsList(passwordEncoder);
if (null == userDetailsList) {
userDetailsList = Colls.set();
}
SecurityProperties.User user = securityProperties.getUser();
org.springframework.security.core.userdetails.UserDetails userDetails =
org.springframework.security.core.userdetails.User.withUsername(user.getName())
.password(getOrDeducePassword(user, passwordEncoder)).roles(Strings.toStringArray(user.getRoles()))
.build();
userDetailsList.add(userDetails);
return userDetailsList;
}
private String getOrDeducePassword(SecurityProperties.User user,
org.springframework.security.crypto.password.PasswordEncoder passwordEncoder) {
String password = user.getPassword();
if (user.isPasswordGenerated()) {
log.info(String.format("%n%nUsing generated security password: %s%n", user.getPassword()));
}
if (passwordEncoder != null) {
/*密码编码器不为空,使用加密密码存储。*/
String encodedPassword = passwordEncoder.encode(password);
return encodedPassword;
}
return org.zodiac.security.constants.SecurityConstants.NOOP_PASSWORD_PREFIX + password;
}
@Override
protected Locale getDefaultLocale() {
Locale defaultLocale = ObjectUtil.defaultIfNull(webMvcProperties.getLocale(), Constants.Zodiac.DEFAULT_LOCALE);
return defaultLocale;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy