【问题标题】:How to pass encrypted value in @Requestparam java spring boot如何在@Requestparam java spring boot中传递加密值
【发布时间】:2020-04-10 21:34:24
【问题描述】:

当我传递精确值时,我创建了一个带有参数@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);

}

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

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

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

【问题讨论】:

标签: java spring-boot


【解决方案1】:

您需要像这样对您的查询参数进行 URL 编码:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2013-12-10
    • 2021-12-10
    • 2017-07-11
    • 1970-01-01
    • 2019-03-20
    相关资源
    最近更新 更多