Grails Spring安全休息 - 403禁止

时间:2015-07-01 17:46:07

标签: spring grails spring-security

所以我刚开始学习Grails,我正在尝试将Spring Security REST插件整合到我的应用程序中,除了弹簧安全核心之外,还安装了插件。在我的REST客户端中,当我点击“api / login”时,我能够获得一个访问令牌,并且它说我有“ROLE_ADMIN”的角色,但是当我尝试使用它时,我不断获得403 Forbidden 。在邮递员,我正在使用的REST客户端,我的授权标题为“Bearer {key}”,我的网址为“http://localhost:8080/test/api/secret”,它给出403错误。我正在尝试设置log4j日志记录以查看任何其他问题,但是有人知道我应该调查什么,任何帮助将不胜感激。如果有帮助,我在下面提供了我的课程,我通常使用UrlMappings等所有内容的默认值。

RandomController.groovy

package test

import grails.plugin.springsecurity.annotation.Secured

@Secured(['IS_AUTHENTICATED_ANONYMOUSLY'])
class MyController {

    @Secured(['ROLE_ADMIN'])
    def secret() {
        render "You have ACCESS!!!"
    }
}

BootStrap.groovy中

class BootStrap {

def init = { servletContext ->

    def adminRole = new SecRole(authority: 'ROLE_ADMIN').save(flush: true)

    def testUser = new SecUser(username: 'bob', password: 'test')
    testUser.save(flush: true)

    SecUserSecRole.create testUser, adminRole, true
}
def destroy = {
}
}

UrlMappings.groovy

class UrlMappings {

static mappings = {
    "/$controller/$action?/$id?(.$format)?"{
        constraints {
            // apply constraints here
        }
    }

    "/api/$controller/$action?/$id?(.$format)?"{ constraints { // apply constraints here
    } }

    "/"(view:"/index")
    "500"(view:'/error')
   }
}

1 个答案:

答案 0 :(得分:1)

对于我从您发布的代码中可以看到的内容,如果您调用url http://localhost:8080/test/api/secret,它应该在SecretController中执行默认操作(可能是索引),但您发布的控制器称为MyController。

要进一步调查,您应该按照文档http://alvarosanchez.github.io/grails-spring-security-rest/1.5.1/docs/guide/debugging.html

中的建议,使用log4j配置启用更详细的日志记录