Kiedy następuje zalogowanie?

Kiedy następuje zalogowanie?
EF
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 7 lat
  • Postów:53
0

Cześć,
Potrzebuję wyłąpać kiedy user dokonuje poprawnego logowanie (powiedziamy dodać to do loga - konkretnie w chwili poprawnej autentykacji).
Kod:

Kopiuj
@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:

Kopiuj
@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";
	}
Kopiuj
@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);		
	}

}
edytowany 2x, ostatnio: efem
S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
0

"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
EF
W public UserDetails loadUserByUsername dałem else i tam wyłapałem moment poprawnego zalogowania. Może komuś sie przyda.
S9
Ale to nie jest moment poprawnego logowania...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.