我已将当前的 spring 安全插件升级到
问题
我注意到我的登录屏幕不再出现。在 Chrome 中它说 此页面有一个重定向循环
重现问题的步骤
因此,我尝试创建一个名为 Test 的全新应用程序来尝试隔离问题。
首先,我通过在 中添加以下条目来安装 security 和 security-ui 插件。 BuildConfig.groovy :
compile ":spring-security-core:2.0-RC2"
compile ":spring-security-ui:1.0-RC1"
其次,我按如下方式运行了快速启动命令:
grails s2-quickstart security Person Authority Requestmap
它在名为 security 的包下创建了 4 个域对象,如下所示:Authority.groovy、Person.groovy、PersonAuthority.groovy 和 Requestmap.groovy
并将以下内容添加到我的 配置.groovy
// Added by the Spring Security Core plugin:
grails.plugin.springsecurity.userLookup.userDomainClassName = 'security.Person'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'security.PersonAuthority'
grails.plugin.springsecurity.authority.className = 'security.Authority'
grails.plugin.springsecurity.requestMap.className = 'security.Requestmap'
grails.plugin.springsecurity.securityConfigType = 'Requestmap'
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/**/js/**': ['permitAll'],
'/**/css/**': ['permitAll'],
'/**/images/**': ['permitAll'],
'/**/favicon.ico': ['permitAll']
]
最后,我通过执行 运行了该应用程序。 grails 运行应用程序 命令,我希望登录页面( auth.gsp )现在不再是您的代码的一部分,而是返回的插件(按设计)
C\myPathToGrails\.grails\2.2.2\projects\Test\plugins\spring-security-core-2.0-RC2\grails-app\views\login\auth.gsp
但相反,我得到一个空白页面,说明该页面有一个重定向循环。
我还添加了以下静态规则,清理应用程序并再次重新运行它以查看它是否可以解决问题,但仍然出现重定向消息。
'/login/**': ['permitAll'],
'/login/auth/**': ['permitAll'],
'/login.gsp': ['permitAll']
有人知道如何解决这个问题吗?
提前致谢。
最佳答案
您正在使用 请求图 作为安全配置类型,您的 controllerAnnotations.staticRules 没有任何效果。
您需要在 中配置规则请求 map 表,并使您的登录 Controller 和公共(public)页面匿名可以访问,而无需登录,例如:
new Requestmap(url: '/*', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save();
new Requestmap(url: '/logout/**', configAttribute: 'IS_AUTHENTICATED_REMEMBERED,IS_AUTHENTICATED_FULLY').save();
new Requestmap(url: '/login/**', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save()
new Requestmap(url: '/index/**', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save();
关于由于重定向循环,Grails Spring Security 无法显示登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20668999/