Несанкционированный запрос, даже если разрешен - PullRequest
0 голосов
/ 24 марта 2020

У меня есть следующий websecurityconfig и я хочу разрешить кому-либо доступ к странице входа в систему, но когда я пытаюсь войти в систему, выдается неавторизованное исключение. Когда я пытаюсь отправить / пользователь / создать запрос, он работает очень хорошо и выполняет свою работу.

http.httpBasic().disable()
            .csrf().disable()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
            .authorizeRequests()
            .antMatchers("/actuator/**").hasAuthority(Role.ADMIN.toString())
            .antMatchers("/").permitAll()
            .antMatchers(HttpMethod.DELETE,"/user/remove").hasAnyAuthority(Role.ADMIN.toString(), Role.USER.toString())
            .antMatchers(HttpMethod.PUT, "/user/create").permitAll()
            .antMatchers(HttpMethod.POST, "**/login", "login", "/login").permitAll() // trying combinations of login path
            .antMatchers("/admin/**").hasAuthority(Role.ADMIN.toString())
            .and()
            .apply(new JwtConfig(jwtTokenProvider));

Вот контроллер входа в систему. Я помещаю отладчик в обратную строку, и выполнение не приходит к этому моменту. Служба безопасности создает исключение.

@RestController
@RequestMapping // I also tried @RequestMapping({"","/"})
public class PublicController {

@Autowired
AuthenticationService authenticationService;

@PostMapping(value = "login", consumes = "application/json")
public GenericResponse login(@RequestBody UserLoginDTO userLoginDTO) {
    return authenticationService.login(userLoginDTO); // never reached this line
}
}

Как я могу справиться с этим?

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

/ путь входа не должен использоваться для пользовательского входа, я попытался изменить его на / signin, и теперь он работает нормально.

0 голосов
/ 24 марта 2020

Вместо вашего сложного antMatcher только по HTTP POST, почему бы не сделать это:

.antMatchers("/login*").permitAll()

Вам также необходимо иметь доступ к вашей странице входа через GET, и это простое сопоставление подойдет для всех ваших логин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...