GrailsSpring安全核心注销消息

GrailsSpring安全核心注销消息,grails,spring-security,Grails,Spring Security,我有一个允许用户更改密码的操作。当一切顺利时,我想注销他并显示一条消息,说明一切顺利,现在他需要使用新密码登录 我试过: flash.message = "You may now login with your new password" redirect (controller: 'logout') 问题是注销控制器重定向到: redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl 当用户明确注销

我有一个允许用户更改密码的操作。当一切顺利时,我想注销他并显示一条消息,说明一切顺利,现在他需要使用新密码登录

我试过:

flash.message = "You may now login with your new password"
redirect (controller: 'logout')
问题是注销控制器重定向到:

redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl

当用户明确注销并返回主页时,我的flash消息就不再存在了。有什么想法可以让它工作,或者一些解决方法吗?

LogoutController只是为了方便起见。有一个过滤器截取其重定向并执行注销逻辑,因此您可以直接重定向到:

flash.message = "You may now login with your new password"
redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl

以下是解决此问题的方法:

  • 使会话无效
  • 设置flash消息
  • 重定向到空页
  • 然后我们在服务器上运行jQuery
    delay
    fadeutAndRemove
    闪存消息div,然后重定向到注销控制器

它并不完美,但它会将消息发送给用户,并将他们带回登录页面

只是好奇,你为什么要将他们注销?如果我使用的是这个系统,我不会期望在更改密码后注销。没有特殊原因。我只是觉得那样更好;)这真的有效吗?当我试过的时候,它没有。如果我重定向到
filterprocesseurl
以及
flash.message
,则flash消息可用于
filterprocesseurl
,但它随后重定向到
logout.afterLogoutUrl
,然后在第二次重定向中丢失任何flash消息。这期4年前的grails杂志谈到了它,为了让它发挥作用,我认为,
FilterProcessURL
需要查看它是否收到了
flash.message
,然后再次设置它以确保它被传播。我尝试了这个建议,但它没有显示flash.message。我使用的是Grails2.1.1,我在spring-security-core-2.0-RC2上试过,但它也不适用Debug说Debug logout.SimpleUrlLouguTsuccessHandler-使用默认Url:/login'并忽略grails.plugin.springsecurity.logout.afterLogoutUrl='/login/auth'的值集。调试日志显示,由于jira.GRAILS.org不再工作,GRAILS-2336的注销被定向到login,然后登录被定向到login/authWayback: