[英]Java APIRest - Postman error 400 bad request with GET method and JWT
當我通過郵遞員登錄我的 API 時,會生成一個 JWT。 使用此 jwt,我為特定用戶創建數據。 但是當我與這個用戶和他的 JWT 連接時,當我使用連接用戶的 JWT 從 POSTMAN 發出 GET 請求時,我收到一個 400 錯誤,說明請求不正確。 我不懂為什么。 我的 Tomcat 服務器端口不是 8080 而是 7777 ... 只需使用 GET 方法在我的控制器下方:
@CrossOrigin(origins = "*")
@RestController
@RequestMapping("/weights")
public class WeightRecordController {
@Autowired
AppUserRepository appUserRepository;
@Autowired
PersonRepository personRepository;
private final Logger logger = LoggerFactory.getLogger(WeightRecordController.class);
public Long getAppUserConnectedId(Principal principal) {
if (!(principal instanceof UsernamePasswordAuthenticationToken)) {
throw new RuntimeException(("User not found"));
}
logger.info("USER IS PRESENT IN DATABASE FROM FUNCTION 'getAppUserConnectedId()'");
UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) principal;
AppUser appUserFinded = appUserRepository.findByAppUsername(token.getName());
return appUserFinded.getIdUser();
}
@GetMapping("/all")
public ResponseEntity<List<WeightRecord>> getAllWeights(@RequestParam Principal principal) {
logger.info("GET /weights/all");
Long appUserConnectedId = this.getAppUserConnectedId(principal);
Person personToShow = personRepository.findById(appUserConnectedId).orElseThrow();
return new ResponseEntity<List<WeightRecord>>(personToShow.getWeightsList(), HttpStatus.OK);
}
}
我不知道為什么Tomcat在8080端口上運行,而你在7777端口調用API,但它返回代碼400。這意味着你通過了應用程序的身份驗證。 您的獲取請求 @RequestParam 主體,但它沒有出現在您的請求中
實際上,JWT 令牌是由請求的標頭傳輸的,所以我只需從端點中刪除 @RequestParam 就可以了! 只需下面我為相關端點的新代碼:
@GetMapping("/all")
public ResponseEntity<List<WeightRecord>> getAllWeights(Principal principal) {
logger.info("GET /weights/all");
Long appUserConnectedId = this.getAppUserConnectedId(principal);
Person personToShow = personRepository.findById(appUserConnectedId).orElseThrow();
return new ResponseEntity<List<WeightRecord>>(personToShow.getWeightsList(), HttpStatus.OK);
}
如果您在 tomcat 上使用端口 8080,為什么在 Postman 上使用端口 7777 ?
此外,嘗試在您的 Spring Boot 配置logging.level.org.springframework.web=DEBUG
中添加以下屬性,您將獲得在控制台日志上收到 400 Bad requests 的確切原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.