package com.jdriven.stateless.security; import javax.servlet.Filter; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.web.filter.CharacterEncodingFilter; @EnableAutoConfiguration @Configuration @ComponentScan public class StatelessAuthentication { public static void main(String[] args) { SpringApplication.run(StatelessAuthentication.class, args); } @Bean public InitializingBean insertDefaultUsers() { return new InitializingBean() { @Autowired private UserRepository userRepository; @Override public void afterPropertiesSet() { addUser("admin", "admin"); addUser("user", "user"); } private void addUser(String username, String password) { User user = new User(); user.setUsername(username); user.setPassword(new BCryptPasswordEncoder().encode(password)); user.grantRole(username.equals("admin") ? UserRole.ADMIN : UserRole.USER); userRepository.save(user); } }; } @Bean public Filter characterEncodingFilter() { CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); characterEncodingFilter.setEncoding("UTF-8"); characterEncodingFilter.setForceEncoding(true); return characterEncodingFilter; } }