Я делаю проект веб-приложения Spring как финальный проект для школы. Мы используем SpringBoot с Hibernate и базой данных H2. Для аутентификации и авторизации мы используем Spring Security. Мы также используем модель View-Controller с репозиториями, сервисами и контроллерами.
У меня есть начальная страница (with the URL "/")
, которая отображается при открытии проекта. После входа в систему вы будете перенаправлены на другую главную страницу с URL-адресом ("/ portadaUsuario") (я из Испании, поэтому на испанском языке много имен). Но, если вы каким-то образом окажетесь в URL-адресе ("/") после входа в систему, вы увидите ту же главную страницу, которая отображается незарегистрированным пользователям с параметрами регистрации и входа, которые очевидно неправильно.
Я знаю, что могу отображать различные HTML-элементы с помощью тегов и элементов безопасности Spring, но я уже построил свой проект на двух разных титульных страницах, и я хотел бы сохранить его, если это возможно. Если это невозможно, пожалуйста, дайте мне знать, как мне показать разные элементы в одном и том же HTML-файле.
Вот методы моего WellcomeController
@Controller
public class PortadaController {
@GetMapping({"/"})
public String mostrarPortada() {
return "portada";
}
@GetMapping("/portadaUser")
public String mostrarPortadaUsuario() {
return "/usuario/portada";
}
}
Вот методы аутентификации пользователей
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/css/**","/js/**","/webjars/**", "/h2-console/**", "/", "/newUser/**").permitAll()
.antMatchers("/admin/**").hasAnyRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.successHandler(customSuccessHandler)
.defaultSuccessUrl("/portadaUser")
.and()
.logout()
.logoutUrl("/logout")
.permitAll()
.logoutSuccessUrl("/")
.and()
.exceptionHandling()
.accessDeniedPage("/acceso-denegado");
http.csrf().disable();
http.headers().frameOptions().disable();
}
Я хочу, чтобы приложение обнаруживало, когда зарегистрированный пользователь запрашивает URL "/", и вместо этого перенаправляет его на /portadaUser
.