grails spring security rest插件如何从身份验证中跳过url

时间:2014-07-16 11:31:30

标签: spring rest grails

我正在使用spring security rest插件以及我的grails应用程序中的核心,我希望有一些调用可以访问而无需身份验证,为此我要添加@Secured(' permitAll')on行动,但它不起作用,它仍然要求令牌。 我还在config.groovy中尝试了' / api / getdata':[' permitAll'],但没有结果!!!

2 个答案:

答案 0 :(得分:0)

使用静态映射..

    grails.plugin.springsecurity.controllerAnnotations.staticRules = [
        '/':                              ['permitAll'],
        '/user/someaction1':             ['permitAll'],
        '/user/someaction1':                 ['permitAll'],
]

答案 1 :(得分:0)

您需要将匿名过滤器添加到过滤器链中。 如果您按照grails spring安全休息配置教程,您可能会得到以下代码:

grails.plugin.springsecurity.filterChain.chainMap = [
    //Stateless chain
    [
        pattern: '/**',
        filters: 'JOINED_FILTERS,-anonymousAuthenticationFilter,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter'
    ]
]

请注意,您有“-anonymousAuthenticationFilter”,它会从您的过滤器链中删除此过滤器。 通过从代码中删除此部分(-anonymousAuthenticationFilter),此过滤器将返回到您的过滤器链, 所以你可以再次使用@Secured(“permitAll”)或@Secured(['IS_AUTHENTICATED_ANONYMOUSLY'])。

我的最终滤镜链图如下所示,就像一个魅力。

grails.plugin.springsecurity.filterChain.chainMap = [
    //Stateless chain
    [
        pattern: '/**',
        filters: 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter'
    ]
]

当您需要查看有关身份验证过程的更多详细信息时,在开发环境中将此内容添加到logback.groovy

logger("org.springframework.security", DEBUG, ['STDOUT'], false)
logger("grails.plugin.springsecurity", DEBUG, ['STDOUT'], false)
logger("org.pac4j", DEBUG, ['STDOUT'], false)

logger("StackTrace", ERROR, ['FULL_STACKTRACE'], false)
root(ERROR, ['STDOUT', 'FULL_STACKTRACE'])

如果您不使用弹簧安全支架,同样的想法也适用。 我在另一篇文章中给出的答案相同,不知道该怎么做。