Cześć,
Potrzebuję wyłąpać kiedy user dokonuje poprawnego logowanie (powiedziamy dodać to do loga - konkretnie w chwili poprawnej autentykacji).
Kod:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
DataSourceConfig dataSource;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/user/register/**").permitAll()
.antMatchers("/note/**").permitAll()
.antMatchers("/").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/user/login")
.permitAll()
.and()
.headers()
.frameOptions().disable()
.and()
.logout()
.permitAll();
}
@Autowired
private CustomUserDetailsService userDetailsService;
@Bean
public DaoAuthenticationProvider authProvider() {
DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
authProvider.setUserDetailsService(userDetailsService);
authProvider.setPasswordEncoder(passwordEncoder());
return authProvider;
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authProvider());
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
W kontrolerze:
@RequestMapping(value="/login", method=RequestMethod.GET)
public String showLoginForm(
@RequestParam(value = "error", required = false) String error,
@RequestParam(value = "logout", required = false) String logout, @ModelAttribute("user") User user, BindingResult result) {
if (error != null) {
LOG.info("INVALID PASSWORD");
ObjectError errorObj = new ObjectError("general", messageSource.getMessage("user.login.credentials.bad", null, LocaleContextHolder.getLocale()));
result.addError(errorObj);
}
if (logout != null) {
LOG.error("LOUT");
}
return "loginForm";
}
@Service
public class CustomUserDetailsService implements UserDetailsService {
@Autowired
UserDao userDao;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userDao.getUserByUsername(username);
if (user == null) {
throw new UsernameNotFoundException("No such user: " + username);
} else if (user.getRoles().isEmpty()) {
throw new UsernameNotFoundException("User " + username + " has no authorities");
}
return new UserDetailsHelper(user);
}
}
scibi92