所以我刚开始学习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')
}
}
答案 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配置启用更详细的日志记录