Код: Выделить всё
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
authenticationManagerBuilder.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
}
Код: Выделить всё
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String username = auth.getName();
// now use some jpa logic to retrive User entity using above username
Код: Выделить всё
public class LoginController {
public String response(@CurrentUser User user) {
// do logic once you have access to logged in user with help of @CurrentUser annotation
}
}
Примечание. Как я получу пользователя, зависит от меня. В приведенном выше примере я использую authentcation.getName(), а затем запрашиваю свою базу данных для создания сущности пользователя. Но я могу использовать любой другой способ сделать это. Я просто хочу создать аннотацию, например CurrentUser, а затем добавить к ней код (извлечения пользователя).