Spring Boot и JWT - пост-запрос возвращает страницу, не найденную - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь реализовать JWT в своем приложении Spring Boot (после этого учебного пособия), и у меня есть страница UserController, подобная этой:

@RestController
@RequestMapping("/users")
public class UserController {



    @Autowired
    private ApplicationUserRepository applicationUserRepository;



    private BCryptPasswordEncoder bCryptPasswordEncoder;



    public UserController(ApplicationUserRepository applicationUserRepository,
            BCryptPasswordEncoder bCryptPasswordEncoder) {
        this.applicationUserRepository = applicationUserRepository;
        this.bCryptPasswordEncoder = bCryptPasswordEncoder;
    }



    @PostMapping("/users/sign-up")
    public void signUp(@RequestBody ApplicationUser user) {
        user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
        applicationUserRepository.save(user); //Salvataggio sul DB
    } 

}

Используя Почтальон, если я делаю POST-запрос к странице http://localhost:8080/users/sign-up, возвращается 404 страница, не найденная ошибка.
Я понятия не имею, где искать ошибку или недостающую часть. Единственное, что я сделал в этом уроке, это добавил (exclude = { SecurityAutoConfiguration.class }) для моего @SpringBootApplication, чтобы отключить страницу входа по умолчанию.

1 Ответ

0 голосов
/ 15 марта 2019

Ошибка лежит здесь:

@PostMapping("/users/sign-up")

Это потому, что ваш контроллер покоя уже сопоставлен с /users

Замените его на:

@PostMapping("sign-up")

Сделайте так:

@RestController
@RequestMapping("/users")
public class UserController {


    @Autowired
    private ApplicationUserRepository applicationUserRepository;



    private BCryptPasswordEncoder bCryptPasswordEncoder;



    public UserController(ApplicationUserRepository applicationUserRepository,
        BCryptPasswordEncoder bCryptPasswordEncoder) {
        this.applicationUserRepository = applicationUserRepository;
        this.bCryptPasswordEncoder = bCryptPasswordEncoder;
    }



    @PostMapping("sign-up")
    public void signUp(@RequestBody ApplicationUser user) {
        user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
        applicationUserRepository.save(user); //Salvataggio sul DB
    } 

}

Правильно ли вы делаете запрос почтальона?Попробуйте:

curl -H "Content-Type: application/json" -X POST -d '{
    "username": "admin",
    "password": "password"
}' http://localhost:8080/users/sign-up

, и вы получите 404, затем проверьте другие файлы вашего проекта.

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