Я использую безопасность Spring Boot с WebSecurityConfigurerAdapter для входа в систему.Моя корневая индексная страница на моем веб-сайте - это место, где пользователь будет входить в систему, поэтому я хочу установить для HttpSecurity loginPage значение loginPage ("/").
Я пробовал различные способы изменить loginPage (" / ") вдля того чтобы он работал.Если я использую loginPage ("/"), отправка формы ничего не делает.Если я использую loginPage ("/ login"), отправка формы выдаст мне ошибку, потому что она пытается перенаправить на / login, который не существует, потому что моя форма входа находится на моей странице корневого индекса.
Это моя форма Thymeleaf:
<form th:action="@{login}" th:object="${user}" method="post">
<div class="form-group row">
<label for="userUserName" class="col-sm-2 col-form-label">Username</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="userUserName" id="userUserName">
</div>
</div>
<div class="form-group row">
<label for="userPassword" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" name="userPassword" id="userPassword">
</div>
</div>
<div class="col-sm-12 text-center">
<button type="submit" class="btn btn-primary">Login</button>
</div>
</form>
Это мой Java-код:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/index", "/webjars/**", "/assets/**", "/images/**").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN") //EADM - Event administrator
.anyRequest().fullyAuthenticated()
.and()
.formLogin()
.loginPage("/")
.usernameParameter("userUsername").passwordParameter("userPassword")
.successHandler(secureAuthenticationSuccessHandler) //Custom Handler to get User Role and redirect to correct page.
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/")
.deleteCookies("JSESSIONID")
.invalidateHttpSession(true)
.and()
.exceptionHandling().accessDeniedHandler(accessDeniedHandler());
}