Я хотел убедиться, что на страницу / settings попадают только администраторы.
Проблема в том, что когда к нему обращаются обычные участники, отображается ошибка 404.
Разве это не ошибка 403 ?? Страница существует, но у участника нет прав для входа на нее.
Что не так??
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/settings").hasAuthority("Administrator")
.anyRequest().authenticated()
.and()
.formLogin().permitAll()
.loginPage("/login").permitAll()
.defaultSuccessUrl("/dashboard")
.failureUrl("/login?error")
.successHandler(authenticationSuccessHandler)
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login")
.logoutSuccessHandler(logoutSuccessHandler)
.and()
.exceptionHandling().accessDeniedPage("/errors/error403")
.and()
.csrf().disable();
}
Да, существует. Я помещаю отладку в контроллер страниц ошибок, и он входит в метод error404, когда я обращаюсь к странице с участником
вы проверили stackoverflow.com/questions/33166139/…? или stackoverflow.com/questions/42797419/…
Если у вас есть точка останова на контроллере страниц ошибок, разве вы не видите условие, которое отправляет ее на 404?
@ user9729328 Введите URL-адрес http://localhost:<PORT>/errors/error403 вашей страницы с отказом в доступе в вашем браузере. Вы видите страницу или получаете 404?




Вы уверены, что "" / errors / error403 "существует? Это может привести к ошибке 404, если страница 403 не существует. Предоставление исправления типа
/settings > <Access restrict> --> 403 page --> <Page not found> --> 404 page.