Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GrailsSpring安全插件-保护除根路径之外的所有内容_Spring_Grails_Spring Security - Fatal编程技术网

GrailsSpring安全插件-保护除根路径之外的所有内容

GrailsSpring安全插件-保护除根路径之外的所有内容,spring,grails,spring-security,Spring,Grails,Spring Security,由于一些外部原因(web.xml中定义的一些过滤器仅应用于某些路径),我需要实现以下(简化)场景: /路径不需要身份验证并重定向到“/secured” /secured需要身份验证 /public1、/public2等不需要身份验证 其他一切(/**)都需要身份验证 为了实现这一点,在Config.groovy中定义了一个filterChain: grails.plugins.springsecurity.filterChain.filterNames = [..., 'myAuthenti

由于一些外部原因(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
和一些其他路径“外部提供”

有什么好的方法来实现这种行为吗


我将Grails2.0.4与Spring Security核心插件一起使用。

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

在Grails中,有一种更简单的方法来定义这些规则。您可以使用或请求映射

例如,您可以在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`