gpt4 book ai didi

java - Spring MVC - 仅允许来自本地主机的请求到特定 Controller

转载 作者:IT老高 更新时间:2023-10-28 13:45:48 26 4
gpt4 key购买 nike

我有一个特定的 Controller (在许多其他 Controller 中)。我想只允许从 localhost 调用的对该 Controller 的请求。最好的方法是什么?

这里是 Controller :

@Controller
public class LocalProvider {

@RequestMapping(value = "/someURL", method = RequestMethod.POST)
@ResponseBody
public responseDTO doSomethingForLocalRequest(@RequestBody ReqDTO reqDTO ) {

//do something
}

编辑:

通过将以下内容添加到 spring security.xml 中成功实现了这一点:

<intercept-url pattern="/someURL/*" access="hasIpAddress('127.0.0.1')" />

最佳答案

我将创建一个自定义注释 @LocalhostOnly 和一个 MVC 拦截器,用于检查处理程序方法是否使用 @LocalhostOnly 注释,在这种情况下检查是否获取了远程 IP 地址从 HttpServletRequest.getRemoteAddr() 确实是 localhost。

如果您使用的是 Spring Security,那么正如 NimChimpsky 建议的那样,最好将远程 ip 检查插入其中。您可以定义一个自定义权限评估器来检查远程 IP 地址。

您还可以使用 servlet 过滤器并在 localhost 中检查特定 URL(例如 /someURL**)。

最后,请注意,如果您将在某个时候在反向代理后面运行应用程序,所有请求看起来都像是从 localhost 到达的(也就是说,如果反向代理安装在同一主机上)。在这种情况下,您需要从 X-Forwarded-For header 中获取 IP 地址。

编辑

Spring security 实际上有 ip 检查表达式 hasIpAddress('127.0.0.1') 所以 NimChimpsky 的回答可能是最好的方法。

关于java - Spring MVC - 仅允许来自本地主机的请求到特定 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23238876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com