gpt4 book ai didi

grails - 使用 grails 过滤器保护 grails 旋律

转载 作者:行者123 更新时间:2023-12-01 00:02:00 27 4
gpt4 key购买 nike

我有一个应用程序,我在其中使用 Spring Security 和 grails 旋律。我计划在生产环境中运行 grails melody,但不希望访问者访问它。我应该如何做到这一点?我尝试在 grails 中创建过滤器(仅显示我正在尝试的示例,而不是实际代码)-

def filters = {
allURIs(uri:'/**') {
before = {
//...
if(request.forwardURI.indexOf("admin") != -1 ||
request.forwardURI.indexOf("monitoring") != -1) {
response.sendError 404
return false
}
}
}
}

但这不起作用,因为“监视”请求没有命中此过滤器。我什至不希望用户知道这样的 URL 存在,所以我想检查过滤器,如果“监控”是 URL,我会显示 404 错误页面。这也是我不想用 spring 安全保护这个 URL 的原因,因为它会显示“访问被拒绝”页面。

基本上我希望 URL 存在,但它们应该对用户不可见。我希望仅对这些特殊 URL 的某些 IP 地址开放访问权限。

另一方面,是否可以编写一个 grails 过滤器,在 spring 安全过滤器被击中之前“起作用”?我希望能够在将请求转发到 Spring Security 之前进行一些过滤。像上面那样编写 grails 过滤器没有帮助。如果我访问 protected 资源并且没有调用此过滤器,则首先命中 Spring 安全过滤器。

谢谢

最佳答案

Grails 过滤器是 Spring Interceptor 的包装器,因此它们在“真正的”servlet 过滤器之后触发,例如 Spring Security 使用的过滤器。如果你想在 Spring Security 之前触发一些东西,你需要在 web.xml 中注册一个过滤器,或者可能在插件的过滤器链中。

这是 IP 地址过滤器的动机之一。我们想要一个可供登录管理员使用的管理部分,但也只能在从 LAN 或 VPN 访问时使用。 LAN 和 VPN IP 地址都以 10 开头。所以我们添加了一个规则

'/admin/**': '10.**'

过滤器发送 404 响应以隐藏资源的存在。

http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/guide/10.%20Extending%20and%20configuring%20the%20plugin.html#10.8.%20IP%20Address%20Restrictions对于这方面的文档。

关于grails - 使用 grails 过滤器保护 grails 旋律,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2953855/

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