Encryption 如何为控制器中的所有操作创建包装器/中间件,以解密传入的请求

Encryption 如何为控制器中的所有操作创建包装器/中间件,以解密传入的请求,encryption,.net-core,asp.net-core-2.0,Encryption,.net Core,Asp.net Core 2.0,使用包装器的原因是对来自客户端的所有传入请求进行解密,加密/解密的目的是使Net Core Api不易获得。我不喜欢每个人都可以访问我的NetCoreAPI,并且已经看到过多次解析我数据的尝试 因此,我决定只创建一个控制器来接收名为Controller和Action的加密GET/POST请求。解密/加密逻辑工作正常,但问题是我需要始终为根控制器创建一个新条件,以标识传递的操作和控制器名称 能否请您告知是否可以创建包装 1) 捕获请求 2) 解密其请求对象 3) 将请求传递给它所属的操作/控制器

使用包装器的原因是对来自客户端的所有传入请求进行解密,加密/解密的目的是使Net Core Api不易获得。我不喜欢每个人都可以访问我的NetCoreAPI,并且已经看到过多次解析我数据的尝试

因此,我决定只创建一个控制器来接收名为Controller和Action的加密GET/POST请求。解密/加密逻辑工作正常,但问题是我需要始终为根控制器创建一个新条件,以标识传递的操作和控制器名称

能否请您告知是否可以创建包装
1) 捕获请求
2) 解密其请求对象
3) 将请求传递给它所属的操作/控制器

详情如下:

这是我的根控制器,具有一个进程操作(与客户端的所有交互都通过此根控制器完成,其余控制器仅对管理员可用)

我希望避免创建此类检查:

if (request.c.ToLower() == "news" && request.a.ToLower() == "getnews")

并创建一个只能解密请求并进一步传递请求的中间包装器

您所做的就是创建一个编码噩梦。这将变得越来越难以管理。正确的处理方法是使用某种身份验证(JWT),以防止未经授权的访问。您不希望仅仅为了阻止访问而掩盖有效消费者的数据。关于JWT的更多细节,请看下面的内容:

我对这些都没有任何意义。也许其他人会有更好的运气,但是你可以考虑添加一些澄清的细节。添加更多的细节,现在很清楚了?我真的不明白你为什么要这么做。不管你是否加密传入的客户端请求,你的应用程序都将是公开可用的。(仅供参考-HTTPS已经为您做到了这一点,您的实现永远不会像HTTPS那样好)。您正在与身份验证问题作斗争,并采取了错误的方法。相反,请实施正确的身份验证,并确保只有经过身份验证的人才能与您的服务器进行交互。您好,Luke,HTTPS仅保护客户端到服务器的请求不被替换。我想公开我的应用程序,但同时,让用户无法理解请求。例如,我有一个具有分页的端点GetItems,黑客可以简单地更改页码来下载我2分钟内的所有数据,而你已经做了2年的所有工作都被偷了…他们甚至使用不同的IP,所以我无法阻止他们…想法是加密r使用pulic密钥从GetItems请求到:jjfkajalksfasjdlhjkasd,并在服务器上用私钥解密。本文可能会很有用。
public class RootRequest {
    // Endpoint
    public string a { get; set; }
    // Contoller
    public string c { get; set; }
    // Request
    public object r { get; set; }
    // Key
    public string k { get; set; }
}
if (request.c.ToLower() == "news" && request.a.ToLower() == "getnews")