Spring-Security: конечные точки в белом списке не работаютJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring-Security: конечные точки в белом списке не работают

Сообщение Anonymous »

Я пытаюсь сделать конечную точку доступной без входа в систему с помощью Spring-Security. Но когда я пытаюсь открыть URL-адрес, меня всегда перенаправляют на страницу входа Spring.
Мой класс конфигурации:

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

@Configuration
@EnableWebSecurity
public class SpringSecurityConfig
{
@Bean
@Order(SecurityProperties.BASIC_AUTH_ORDER)
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception
{
log.debug("securityFilterChain() bean called");

http.authorizeHttpRequests(auth -> {
//            auth.requestMatchers("/register").permitAll();
auth.requestMatchers("/register").anonymous();
//            auth.requestMatchers("/register").authenticated();
auth.anyRequest().authenticated();
});
http.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.ALWAYS));

http.formLogin(Customizer.withDefaults());
http.httpBasic(Customizer.withDefaults());

http.csrf(AbstractHttpConfigurer::disable);
http.headers(headers -> headers.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable));

return http.build();
}
}
Контроллер:

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

@Controller
@AllArgsConstructor
@SessionAttributes({"registerError", "redirect"})
public class UserController
{
private AuthenticationService authenticationService;

//    @PreAuthorize("permitAll()")
@Transactional
@GetMapping("/register")
public String createUser(ModelMap model, HttpServletRequest request)
{
log.info("createUser() called");

model.put("userDto", new UserDto());
request.getSession().setAttribute("redirect", "redirect:register");

return "signup";
}

//    @PreAuthorize("permitAll()")
@Transactional
@PostMapping("/register")
public String registerUser(ModelMap model, HttpServletRequest request, @Valid UserDto userDto)
{
log.info("registerUser() called with userDto={}", userDto);

try {
authenticationService.registerUser(userDto);
} catch (DuplicateKeyException e)
{
model.put("userDto", userDto);
model.put("registerError", "A user with this name already exists.");
return "redirect:register";
}

model.remove("registerError");
request.getSession().removeAttribute("redirect");

return "redirect:/";
}
}
Я настроил свои свойства application.properties следующим образом:

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

server.port=2345
spring.mvc.servlet.path=/
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
Когда я вхожу в систему и пытаюсь получить доступ к конечной точке /register, я получаю ошибку 403, как и ожидалось, но при выходе из системы я не могу получить доступ к /register. Кто-нибудь знает, что я делаю не так?
Я также пробовал некоторые комбинации с закомментированным кодом, но ничего не активировало конечную точку /register для пользователей, не вошедших в систему. п>

Подробнее здесь: https://stackoverflow.com/questions/785 ... ot-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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