Как проверить, вошел ли пользователь в систему или анонимен в Spring SecurityJAVA

Программисты JAVA общаются здесь
Anonymous
Как проверить, вошел ли пользователь в систему или анонимен в Spring Security

Сообщение Anonymous »

Когда вызывается корневой контроллер («/»), я хочу проверить, прошел ли пользователь аутентификацию или нет. Если он не прошел аутентификацию, я хочу отобразить домашнюю страницу, а если он есть, я хочу отобразить панель управления следующим образом:

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

@GetMapping("/")
public String homePage() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

if(authentication == null) return "home";

return "dashboard";
}
Но когда я запускаю программу, она пытается отобразить панель мониторинга, а это означает, что очевидно, что условие if() вернуло ложное значение. Но я знаю, что я определенно не входил в систему. Почему это не работает.

Кроме того, я знаю, что могу переопределить метод configure(HttpSecurity http) в WebSecurityConfigurerAdapter следующим образом:

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

http.authorizeRequests().antMatchers("/").authenticated();
Но это перенаправит меня на страницу /login, что подходит для любого другого запроса, но не («/»), где я хочу быть перенаправлен на «домашнюю» страницу, если сеанс не существует.

Это значение аутентификации после Sysout: org.springframework.security.authentication.AnonymousAuthenticationToken@52132976: Участник: анонимный пользователь; Учетные данные: [ЗАЩИЩЕНО]; Аутентифицировано: правда; Подробности: org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; Идентификатор сеанса: ноль; Предоставленные полномочия: ROLE_ANONYMOUS

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