Grails spring-security-core 插件教程
Posted
技术标签:
【中文标题】Grails spring-security-core 插件教程【英文标题】:Grails spring-security-core plugin tutorial 【发布时间】:2015-06-18 09:54:01 【问题描述】:我正在使用 Grails 2.4.5,我创建了一个新应用程序 TestSecurity,创建了一个简单的控制器 SercuredController,可以从界面访问。
package testsecurity
class SecuredController
def index()
render 'HELLO FROM CONTROLLER'
然后我添加了一个 spring_security_core 插件:我添加了 compile ":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']
]
【问题讨论】:
教程 URL 现在是 404,仍然有效的*** URL - grails-plugins.github.io/grails-spring-security-core 【参考方案1】:我在控制器上使用了@Secured(['ROLE_ANONYMOUS']) 注释。安全性已经开始发挥作用了。
【讨论】:
我将在本周更新教程以包含一个说明,即在 2.0 中默认情况下每个 URL 都需要一个访问规则(即使任何人都可以访问它)【参考方案2】:您应该使用注释。保护您的控制器。 或者如果您不喜欢注释,请更改 grails.plugin.springsecurity.securityConfigTyp。
阅读:
http://grails-plugins.github.io/grails-spring-security-core/guide/requestMappings.html#securedAnnotations
默认情况下,所有 url 都是安全的。要更改此尝试:
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 并不是一个好主意。所以不建议使用它,但如果你只是想测试一些东西,它会很有帮助!
【讨论】:
非常感谢 CyberAleks! 当添加一些注释或数据库请求映射或添加到 Config.groovy 中的配置映射是微不足道的时候,请不要建议人们禁用像 rejectIfNoRule 这样的明智功能 这不是建议。正如我所说的“你应该使用注释”,他问“没有注释,控制器不能被保护并且可以被访问”。这只是他的问题的答案。 两个 URL 都是 404 *** URL,仍然有效 grails-plugins.github.io/grails-spring-security-core以上是关于Grails spring-security-core 插件教程的主要内容,如果未能解决你的问题,请参考以下文章
Grails:Grails3:doWithWebDescriptor?
用于 Grails 2.0 的 Grails/Gradle 插件