小编Lih*_*ini的帖子

Jackson ObjectMapper - 指定对象属性的序列化顺序

我正在实现一个RESTful Web服务,用户必须发送一个签名的验证令牌以及请求,这样我才能确保请求没有被中间人篡改.我目前的实施如下.

验证令牌是序列化为String的VerifData对象,然后进行散列和加密.

class VerifData {
    int prop1;
    int prop2;
}
Run Code Online (Sandbox Code Playgroud)

在我的服务中,我将要序列化的数据放入VerifData实例中,然后使用Jackson ObjectMapper对其进行序列化,并将其与验证令牌一起传递给验证引擎.

VerfiData verifData = new VerifData(12345, 67890);
ObjectMapper mapper = new ObjectMapper();
String verifCodeGenerated = mapper.writeValueAsString(verifData);
Run Code Online (Sandbox Code Playgroud)

但似乎每次启动应用程序容器时,ObjectMapper映射到字符串的属性顺序都会发生变化.

例如:有一次

{"prop1":12345,"prop2":67890}
Run Code Online (Sandbox Code Playgroud)

它将是另一次

{"prop2":67890,"prop1":12345}
Run Code Online (Sandbox Code Playgroud)

因此,如果客户端已将VerifData实例序列化为第一个String,则即使它是正确的,也有50%的可能性失败.

有办法解决这个问题吗?我可以通过ObjectMapper指定要映射的属性的顺序(如升序)吗?或者是否有其他方法可以最好地实施此验证步骤.客户端和服务器实现都是由我开发的.我使用Java Security API进行签名和验证.

java serialization json jackson

64
推荐指数
6
解决办法
4万
查看次数

数据集的目的是什么?

当我们可以使用简单的SQL语句直接与数据库通信时,我想了解数据集的用途.另外,哪种方式更好?更新数据集中的数据,然后立即将它们传输到数据库或直接更新数据库?

c# sqldatasource dataset winforms

7
推荐指数
2
解决办法
2729
查看次数

通过for循环迭代文本框

假设我有10个文本框,我想将相同的文本放入每个文本框中.我不想写textBoxNum. Text = "hello!"十次所以我可能写这样的东西:

for(int i=1; i<=10; i++)
{
    textBox + i. Text = "hello!";
}
Run Code Online (Sandbox Code Playgroud)

显然,它不起作用.

如何通过for循环完成?

c# textbox for-loop winforms

2
推荐指数
1
解决办法
5158
查看次数

Byteman - 跟踪给定包中的所有类和方法

使用Byteman时,我们必须在规则语法中指定类和方法.如果我想使用Byteman跟踪程序执行怎么办?

示例:执行程序功能时,我不知道正在执行哪些方法.我想在功能执行期间识别被调用的方法.

这是否意味着我要为给定包中每个类的每个方法添加一个规则?或者有没有其他方法来实现这一目标?

java trace byteman

0
推荐指数
1
解决办法
1036
查看次数