我的身份验证服务返回由Spring身份验证解析器生成的x-auth令牌,我的令牌存储库是redis。因此用户应该使用此服务进行身份验证,然后使用其他服务。
我的所有其他服务都连接到相同的redis实例,因此当它们接收到x-auth令牌时,它们可以获得用户会话详细信息。我通常使用@PreAuthorize
注释来进行授权,然后指定可以访问控制器或方法的角色。
到目前为止一切正常。然后我被要求在这个架构中添加速率限制功能。因此,例如,单个用户不能向books服务中的特定api发出超过1个POST
请求。另外,如果有两个book服务实例,我希望在其关于速率限制时将这两个实例都算作单个服务。
我找到了大量的文件,这些文件让我了解了这个名为sping-Cloud-zuul-ratlimit的项目。看着文档,我意识到它确实支持redis作为存储(对我来说很好,因为我已经有redis了),它还支持每个用户的处理速率限制。
问题是我的zuul网关对用户一无所知!它无法访问redis存储。如果我让它访问redis,问题可能会解决,但另一个问题会出现:我需要授权用户两次,这需要更多的时间和更多的redis流量!一次在网关,一次在每个服务(检查角色和会话详细信息)。
我正在寻找与此需求列表最接近的解决方案:
Zuul gateway rate Limitor插件基本上是根据特定的密钥(可以是用户的IP、某些ID、请求路径或使用自定义密钥生成器的自定义组合)在时间间隔内给定的用户请求跟踪用户请求的计数器。您可以将其添加到现有的zuul网关应用程序中。
比方说,rratimiter-网关正在使用"[clientIP][userID][method][path]"
作为存储在redis中的请求计数器密钥,例如"10.8.14.58:some@mail.com: POST:/book"
。
这里有一些我能想到的选择:
作者
的传入请求也可以使用不同的redis实例作为rratimit密钥存储。
至于动态配置,根据它的文档,您可以通过属性调整速率限制配置。我不知道它是否可以在运行时通过SpringCloud配置或其他远程配置实现进行动态调整,而无需重新启动网关应用程序。
我在用 Linux 编写的 CUDA 代码中使用了一个库(该库称为 cublas),我可以使用 nvcc 成功编译我的代码,但是当我运行代码时出现此错误: 加载共享库时出错:libcublas.so.7.5:无法打开共享对象文件:没有这样的文件或目录 我发现此链接是一种解决方案,建议运行一些命令以解决问题。基于此链接的一种解决方案是运行以下命令: export LD_LIBRARY_PATH=$L
问题内容: 我正在尝试在办公室笔记本电脑上安装JDK,但是它说我需要管理员权限。我只能在工作中使用自己的帐户。 没有管理员权限的情况下如何安装Java开发套件? 问题答案: 这是一种在没有管理员特权或没有管理员密码的情况下安装Java的解决方法。为此,您需要安装不需要管理员特权的cygwin。在utils中,确保您选择cabextract.exe进行安装。 启动Cygwin Bash外壳。 键入c
我想为android清单做一个权限这个权限是 我的问题是,在没有用户干预的情况下,如何做到这一点?
问题内容: 我是Python的新手,正在尝试安装此模块:http : //www.catonmat.net/blog/python-library-for-google- search/ 目录中没有setup.py,但是有以下文件: 有人可以告诉我如何设置或使用此模块吗? 谢谢! 问题答案: 在系统上开始使用该代码的最简单方法是: 将文件放入计算机上的目录中, 将该目录的路径添加到您的PYTHON
假设我有一个web应用程序(“MyDriveApp”)需要在后台服务中访问驱动器文件。它要么拥有正在访问的文件,要么在所有者共享文档的谷歌账户中运行。 我明白我的应用程序需要一个刷新令牌,但我不想编写代码来获得它,因为我只会做一次。 注意。这不是使用服务帐户。该应用程序将在一个传统的谷歌账户下运行。服务帐户在某些情况下是一种有效的方法。然而,使用Oauth Playground来模拟应用程序的技术
[ERROR]无法执行goal org.springframework.boot:spring-boot-maven-plugin:2.1.1。release:repackage(repackage)on project project-data:goal org.springframework.boot:spring-boot-maven-plugin:2.1.1。release:repacka