【问题标题】:Securing URL mapping with grails spring security core plugin使用 grails spring security core 插件保护 URL 映射
【发布时间】:2012-03-29 15:32:37
【问题描述】:

正如标题所说,我正在尝试使用 Spring 的安全核心来保护页面。考虑以下 URL 映射(假设存在 home.gsppage1.gsppage2.gsp):

"/"(view:'/home')
"/page1"(view:'/page1')
"/page2"(view:'/page2')

现在,考虑Config.groovy 中的以下设置:

grails.plugin.springsecurity.interceptUrlMap = [
    '/': ['IS_AUTHENTICATED_ANONYMOUSLY'],   
    '/**': ['IS_AUTHENTICATED_FULLY']        
]

如果我理解正确,我应该能够在没有任何安全措施的情况下访问主页,并且当我尝试访问 /page1/page2 时,我应该被定向到登录页面。不幸的是,情况似乎并非如此。我仍然可以直接访问 page1 和 page2(例如http://localhost:8080/MyGrailsProject/page1)。

但是,如果我尝试通过控制器的操作使用 @Secured 注释,安全性就会启动(即请求被重定向到登录页面)。我的配置似乎有什么问题?如何保护 URL 映射?

【问题讨论】:

  • 您是否尝试在interceptUrlMap 中添加'/home/**': ['IS_AUTHENTICATED_ANONYMOUSLY']?

标签: security grails plugins spring-security


【解决方案1】:

你有:

grails.plugin.springsecurity.interceptUrlMap

应该是

grails.plugins.springsecurity.interceptUrlMap

注意插件上的 s。

【讨论】:

    【解决方案2】:

    这是使用注释的默认方法。但是如果你更喜欢使用 url map,你必须设置:

    grails.plugins.springsecurity.securityConfigType = "InterceptUrlMap"
    

    参见文档:http://grails-plugins.github.com/grails-spring-security-core/docs/manual/guide/single.html#5.2%20Simple%20Map%20in%20Config.groovy

    【讨论】:

    • 是的,我已经对Config.groovy进行了必要的配置,我仍然可以直接访问这些页面。实际上,我对使用控制器的想法很感兴趣,但我仍然喜欢将所有配置都放在一个文件中的想法(而不是将其作为注释嵌入到控制器的操作中)。
    【解决方案3】:

    顺序很重要,您应该在顶部的interceptUrlMap 中设置最严格的一个。

    【讨论】:

    • 模式总是按照定义的顺序进行评估。因此,更具体的模式在列表中定义得比不太具体的模式更高,这一点很重要。这反映在我们上面的示例中,其中更具体的 /secure/super/ 模式看起来比不太具体的 /secure/ 模式更高。如果它们被反转,/secure/ 模式将始终匹配,而 /secure/super/ 模式将永远不会被评估。
    猜你喜欢
    • 2016-02-16
    • 2014-12-06
    • 2016-03-23
    • 2012-09-29
    • 1970-01-01
    • 2012-11-04
    • 2015-06-18
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多