我正在使用Grails 2.4.5,我创建了一个新的应用程序TestSecurity,创建了一个简单的控制器SercuredController,可以从界面访问。
package testsecurity
class SecuredController {
def index() {
render 'HELLO FROM CONTROLLER'
}
}
然后我添加了一个spring_security_core插件:我添加了编译“:spring-security-core:2.0-RC4”。 然后是s2-quickstart com.testapp用户角色
然后我启动应用程序,spring_security不允许我输入http://localhost:8080/TestSecurity/secured/index并要求输入密码和登录。 我没有添加@Secured(['ROLE_ADMIN'])或任何其他注释。 如何解决这个错误?
在教程http://grails-plugins.github.io/grails-spring-security-core/guide/single.html#tutorials中,如果没有注释,控制器就不能被保护并且可以被访问。
Config.groovy文件如下所示:
// Added by the Spring Security Core plugin:
grails.plugin.springsecurity.userLookup.userDomainClassName = 'com.testapp.User'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'com.testapp.UserRole'
grails.plugin.springsecurity.authority.className = 'com.testapp.Role'
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/assets/**': ['permitAll'],
'/**/js/**': ['permitAll'],
'/**/css/**': ['permitAll'],
'/**/images/**': ['permitAll'],
'/**/favicon.ico': ['permitAll']
]
答案 0 :(得分:1)
我在控制器上使用了@Secured(['ROLE_ANONYMOUS'])注释。安全性已经开始起作用。
答案 1 :(得分:0)
您应该使用注释。保护您的控制器。 如果您不喜欢注释,请更改grails.plugin.springsecurity.securityConfigTyp。
阅读本文:
默认情况下,所有网址都是安全的。要更改此尝试:
grails.plugin.springsecurity.rejectIfNoRule = false grails.plugin.springsecurity.fii.rejectPublicInvocations = false
阅读此选项的文档:
http://grails-plugins.github.io/grails-spring-security-core/guide/requestMappings.html
<强>注意:强>
正如Burt Beckwith在下面评论的那样,禁用rejectIfNoRule和rejectPublicInvocations不是一个好主意。因此,建议不要使用此功能,但如果您只想测试某些内容,则可能会有所帮助!