小编whi*_*ash的帖子

Nginx 仅在某个位置限制 GET 或 POST 请求的速率

我在 nginx 中配置了一台服务器,并使用以下代码来创建我的速率限制区域:

limit_req_zone $key zone=six_zone:10m rate=60r/m;

在我的位置,我使用一个模块来满足请求。该位置支持 GET、POST 和 DELETE 方法。我正在尝试仅对对该位置的 GET 请求进行速率限制。我认为这可能有效,但事实并非如此。

location /api/ {
    if ($request_method = GET) {
        limit_req zone=six_zone;
    }
    reqfwder;
}
Run Code Online (Sandbox Code Playgroud)

对我如何解决这个问题有任何帮助或指示吗?谢谢。

nginx rate-limiting nginx-location nginx-config

4
推荐指数
1
解决办法
7669
查看次数

如何将 Metamask 连接到 Web3J (java)

我正在尝试将我的 Metamask 钱包连接到我的 Java Spring-Boot 后端。我试图遵循这里的例子。我能够自动生成随机数并毫无问题地接收钱包 ID。我正在尝试验证服务器上钱包中的签名随机数,以确保发件人确实是他们所说的人。但是,我无法在 Web3J 上找到任何文档来执行此操作。

web3j 不适合用于此目的吗?该示例展示了如何基于 javascript 在 NodeJS 上进行验证,但我没有找到任何关于如何在 Java 上执行此操作的示例。

我的理解是,公钥是钱包 ID 本身,而消息是由钱包私钥签名的随机数,由于明显的原因,该私钥不被共享。据此,我需要使用公钥“解密”消息,并查看解密的消息是否与后端发送到 Metamask 进行签名的随机数相同。它是否正确?

这是我创建随机数并将其发送到 UI 的代码:

public User findUserByPublicAddress(String publicWalletId) {
    User u = userRepository.findByPublicWalletId(publicWalletId);
    if(u == null) {
        u = new User("", "", "", null, publicWalletId, "");
        String nonce = StringUtil.generateRandomAlphaNumericString();
        u.setNonce(nonce);
        userRepository.saveAndFlush(u);
    }
    return u;
}
Run Code Online (Sandbox Code Playgroud)

在这里,我查看用户是否已经在我的系统中,如果不是,那么我只需创建一个临时用户,并生成一个随机数并将其保存在数据库中。该随机数被发送到 UI 以供 Metamask 进行签名。但是,我不确定如何进行验证部分。

java authentication metamask cryptocurrency web3-java

3
推荐指数
1
解决办法
3349
查看次数