为什么Grails Spring安全通道安全性将我的控制器名称替换为';圣杯;?

为什么Grails Spring安全通道安全性将我的控制器名称替换为';圣杯;?,grails,https,spring-security,grails-plugin,Grails,Https,Spring Security,Grails Plugin,注意:我使用的是Grails2.0.4和spring安全核心插件1.2.7.2 这似乎是一个错误,但我想首先确保我做的事情是正确的。基本上,我希望某些URL使用HTTPS进行安全保护,而其他URL则不是,看起来非常标准。如果用户访问不安全的URL,我不希望他们停留在HTTPS上。在我添加这一行以完成最后一点之前,一切正常: '/**': 'REQUIRES_INSECURE_CHANNEL' 在这一点上,由于某种原因,我所有的安全控制器名称都被“grails”重写了,

注意:我使用的是Grails2.0.4和spring安全核心插件1.2.7.2

这似乎是一个错误,但我想首先确保我做的事情是正确的。基本上,我希望某些URL使用HTTPS进行安全保护,而其他URL则不是,看起来非常标准。如果用户访问不安全的URL,我不希望他们停留在HTTPS上。在我添加这一行以完成最后一点之前,一切正常:

    '/**':          'REQUIRES_INSECURE_CHANNEL'
在这一点上,由于某种原因,我所有的安全控制器名称都被“grails”重写了,事情变得非常糟糕。例如,如果我去

http://localhost:8080/login/index
它变成

http://localhost:8080/grails/auth/index.dispatch 
('grails'不是我的应用程序的名称,我也没有任何名为'grails'的控制器-我的应用程序在根目录下运行)

如果我删除根通配符的条目,一切正常,我的URL中不再有奇怪的“grails”,尽管我在我想要保护的页面之外仍然使用https

这是我的完整配置。请注意,安全页面不会尝试加载我可以看到的任何不安全资源,只加载“any_CHANNEL”下定义的内容

grails.plugins.springsecurity.secureChannel.definition = [
        '/login/**':         'REQUIRES_SECURE_CHANNEL',
        '/register/**':         'REQUIRES_SECURE_CHANNEL',
        '/changePassword/**':         'REQUIRES_SECURE_CHANNEL',
        '/userAccountManagement/**':    'REQUIRES_SECURE_CHANNEL',


        '/simpleCaptcha/**': 'ANY_CHANNEL',
        '/img/**':        'ANY_CHANNEL',
        '/images/**':        'ANY_CHANNEL',
        '/static/**':        'ANY_CHANNEL',

        '/**':          'REQUIRES_INSECURE_CHANNEL'  //remove this, everything OK

]

/grails/controller/action.dispatch
URI是grails URL映射机制的产物。Grails中的URL映射由一个servlet过滤器实现,该过滤器将请求(在RequestDispatcher意义上)转发到
/Grails
URI,正是这些过滤器驱动DispatcherServlet


我怀疑这里发生的事情是,
/**
导致通道安全过滤器对这些转发的请求URI以及原始的预映射URI启动。如果在
/**
规则之前为
/grails/**
设置一个显式的ANY_通道,那么它是否有效?

grails/controller/action.dispatchURI就是grails URL映射机制产生的。Grails中的URL映射由一个servlet过滤器实现,该过滤器将请求(在RequestDispatcher意义上)转发到
/Grails
URI,正是这些过滤器驱动DispatcherServlet


我怀疑这里发生的事情是,
/**
导致通道安全过滤器对这些转发的请求URI以及原始的预映射URI启动。如果您在
/**
规则之前为
/grails/**
设置一个明确的ANY_通道,它是否有效?

看起来您是对的-他们修复了一个bug,在1.2.7.3中停止向前处理spring security filter链-这修复了我的问题。由于此修复,我不需要执行您的建议。看起来你是对的-他们在1.2.7.3中修复了一个错误,停止处理spring安全过滤器链-这修复了我的问题。由于此修复,我不需要执行您的建议。