繁体   English   中英

如何在@Requestparam java spring 引导中传递加密值

[英]How to pass encrypted value in @Requestparam java spring boot

我创建了一个带有参数@Requestparam String Id 的java 服务,当我传递精确值时它工作正常,当我尝试传递加密值时它不能正常工作。 我在下面给出了我的工作。

@GetMapping("fetch")
@Produces(value = "application/json")
@ApiOperation("Get user detail from Okta")
public ResponseEntity<UserInfoRespone> getUserDetailsFromOkta(@RequestParam String agentId) {

    System.out.println("Actual:" +"c4njCC2/reRud+O/I41w3w==");
    System.out.println("Incoming agent Id:" + agentId);

}

当我使用 postman 调用服务时,传递了加密值c4njCC2/reRud+O/I41w3w==但是当我尝试打印传入代理 id 时,我发现实际文本中缺少几个字符,看起来像c4njCC2/reRud O/I41w3w= =它错过了 + 符号并为其自身添加了空间。 因此,当我尝试解密字符串时,它会以 null 的形式出现。

Expected : c4njCC2/reRud+O/I41w3w==
Actual   : c4njCC2/reRud O/I41w3w==

有人可以帮我解决这个问题吗?

您需要 URL 对您的查询参数进行编码,如下所示:

c4njCC2%2FreRud%2BO%2FI41w3w%3D%3D

有几个网站可以像这样对值进行编码/解码(例如https://www.urlencoder.org/ )。 使用普通的 java 您可以使用java.net.URLEncoder

URLEncoder.encode("c4njCC2/reRud+O/I41w3w==", StandardCharsets.UTF_8);

然而,请求参数可能不是加密数据的最佳选择,因为您可能也会遇到其他字符(即使是编码形式)的问题。

我建议改为在请求正文中提交此数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM