55 lines
2.4 KiB
Java
55 lines
2.4 KiB
Java
package com.spring.config;
|
|
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
|
import org.springframework.context.ApplicationEventPublisher;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.security.authentication.AuthenticationEventPublisher;
|
|
import org.springframework.security.authentication.AuthenticationManager;
|
|
import org.springframework.security.authentication.DefaultAuthenticationEventPublisher;
|
|
import org.springframework.security.authentication.ProviderManager;
|
|
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
|
|
import org.springframework.security.core.userdetails.User;
|
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
|
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
|
|
|
|
@Configuration
|
|
public class DefaultSecurityConfig {
|
|
|
|
/**
|
|
* 添加内存用户
|
|
*
|
|
* @return {@link ConditionalOnMissingBean}
|
|
*/
|
|
@Bean
|
|
@ConditionalOnMissingBean(UserDetailsService.class)
|
|
InMemoryUserDetailsManager inMemoryUserDetailsManager() {
|
|
String generatedPassword = PasswordEncoderFactories.createDelegatingPasswordEncoder()
|
|
.encode("123456");
|
|
return new InMemoryUserDetailsManager(User.withUsername("user")
|
|
.password(generatedPassword).roles("USER").build());
|
|
}
|
|
|
|
@Bean
|
|
@ConditionalOnMissingBean(AuthenticationEventPublisher.class)
|
|
DefaultAuthenticationEventPublisher defaultAuthenticationEventPublisher(ApplicationEventPublisher delegate) {
|
|
return new DefaultAuthenticationEventPublisher(delegate);
|
|
}
|
|
|
|
@Bean
|
|
public PasswordEncoder passwordEncoder() {
|
|
return new BCryptPasswordEncoder();
|
|
}
|
|
|
|
@Bean
|
|
public AuthenticationManager authenticationManager(UserDetailsService userDetailsService, PasswordEncoder passwordEncoder) {
|
|
DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider(userDetailsService);
|
|
authenticationProvider.setPasswordEncoder(passwordEncoder);
|
|
|
|
return new ProviderManager(authenticationProvider);
|
|
}
|
|
|
|
} |