【问题标题】:Grails Spring Security plugin - secure everything except root pathGrails Spring Security 插件 - 保护除根路径之外的所有内容
【发布时间】:2012-11-03 03:24:22
【问题描述】:

由于一些外部原因(web.xml中定义的一些过滤器只适用于某些路径),我需要实现以下(简化)场景:

  • / 路径不需要身份验证并重定向到'/secured'
  • /secured 需要认证
  • /public1/public2等不需要认证
  • 其他所有内容 (/**) 都需要身份验证

为了实现这一点,在Config.groovy 中定义了一个filterChain

grails.plugins.springsecurity.filterChain.filterNames = [..., 'myAuthenticationFilter']
grails.plugins.springsecurity.filterChain.chainMap = [
  '/': 'JOINED_FILTERS,-myAuthenticationFilter',
  '/public1/**': 'JOINED_FILTERS,-myAuthenticationFilter',
  '/public2/**': 'JOINED_FILTERS,-myAuthenticationFilter',
  '/**': 'JOINED_FILTERS'
]

但是,匹配/ 路径存在问题。我试过'/'''。我可以用'/*'匹配这个路径,但是它匹配更多的URL,这不是我需要的。

我不能要求用户在访问/ 时进行身份验证,因为在所有情况下都必须重定向到/secured,并且身份验证要求是,比如说,“外部提供”仅适用于/secured 和其他一些路径。

有什么好的方法可以实现这种行为吗?

我正在使用带有 Spring Security Core 插件的 Grails 2.0.4。

【问题讨论】:

    标签: spring grails spring-security


    【解决方案1】:

    您能否使用 URLMapping 将特定控制器和操作与 / URL 关联?然后,您可以保护除特定控制器/操作对之外的所有内容。

    【讨论】:

      【解决方案2】:

      在 Grails 中有更简单的方法来定义这些规则。您可以使用 interceptUrlMap 或 requestmap。

      例如,您可以在 Config.groovy 中定义您的安全配置:

      grails.plugins.springsecurity.interceptUrlMap = [
         '/secured/**':    ['ROLE_ADMIN','IS_AUTHENTICATED_FULLY'],
         '/public1/**':   ['IS_AUTHENTICATED_ANONYMOUSLY'],
         '/public2/**':   ['IS_AUTHENTICATED_ANONYMOUSLY'],
         '/js/**':        ['IS_AUTHENTICATED_ANONYMOUSLY'],
         '/css/**':       ['IS_AUTHENTICATED_ANONYMOUSLY'],
         '/images/**':    ['IS_AUTHENTICATED_ANONYMOUSLY'],
         '/login/**':     ['IS_AUTHENTICATED_ANONYMOUSLY'],
         '/logout/**':    ['IS_AUTHENTICATED_ANONYMOUSLY'],
         '/':            ['IS_AUTHENTICATED_ANONYMOUSLY'],
         '/**':            ['IS_AUTHENTICATED_FULLY']          //put this as the last item
      ]
      grails.plugins.springsecurity.successHandler.defaultTargetUrl = "/secured"   //redirect `/` access to `/secured`
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-06
        • 2012-03-29
        • 2011-06-16
        • 2016-05-24
        • 1970-01-01
        • 2014-06-14
        • 2013-08-31
        • 2017-03-08
        相关资源
        最近更新 更多