Spring boot создает пользовательскую аннотацию для входа в систему пользователя?JAVA

Программисты JAVA общаются здесь
Anonymous
Spring boot создает пользовательскую аннотацию для входа в систему пользователя?

Сообщение Anonymous »

У меня есть модель сущности под названием «Пользователь». Я реализовал UserDetailsService и использовал его в WebSecurityConfig вот так. Для краткости удален ненужный код.

Код: Выделить всё

@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
Теперь мой вопрос: есть ли какой-нибудь способ создать собственный AOP или аннотацию, которая предоставит мне доступ к вошедшему в систему пользователю, чтобы я мог использовать его где угодно, например, в моем контроллере, как показано ниже?

Код: Выделить всё

public class LoginController {
public String response(@CurrentUser User user) {
// do logic once you have access to logged in user with help of @CurrentUser annotation
}
}
Так, как в приведенном выше примере, могу ли я создать аннотацию @CurrentUser, которая дает мне текущий вошедший в систему пользователь (если нет, выдает исключение, которое я могу перехватить в совете контроллера)?

Примечание. Как я получу пользователя, зависит от меня. В приведенном выше примере я использую authentcation.getName(), а затем запрашиваю свою базу данных для создания сущности пользователя. Но я могу использовать любой другой способ сделать это. Я просто хочу создать аннотацию, например CurrentUser, а затем добавить к ней код (извлечения пользователя).

Вернуться в «JAVA»