Я пытаюсь использовать URL (муравей основе) соответствия вместе с @PreAuthorize ("permitAll") на некоторые контроллеры, т.е.Spring Security @PreAuthorize на контроллерах
@Controller
@RequestMapping("/register")
public class RegistrationController {
...
@PreAuthorize("permitAll")
@RequestMapping(method = RequestMethod.GET)
public String register() { ... }
SecurityConfig:
@Configuration
@EnableWebMvcSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.authorizeRequests()
.antMatchers("/").permitAll()
.anyRequest().authenticated()
Я также попытался добавить @EnableGlobalMethodSecurity в мой MVC конфигурации:
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MvcConfig extends WebMvcConfigurerAdapter { ... }
Но это не имеет никакого эффекта
Однако я все еще запрашиваю аутентификацию при попадании/регистрации. Если я добавлю «/ register» к муравьям, он работает, то есть .antMatchers («/», «/ register»). AllowAll()
Что мне здесь не хватает? Кажется, @PreAuthorize не влияет на мои контроллеры.
Я должен уточнить, что @PreAuthorize ("hasRole ('ADMIN')") на контроллере действительно работает: не администраторы получат ошибку 403. Проблема заключается в том, как переопределить муравьиный мусор с аннотацией @PreAuthorize. –