Grails Spring Security Core注销消息

jjc*_*pek 5 grails spring-security

我有一个允许用户更改密码的操作.当一切顺利的时候,我想退出他并显示一切顺利的消息,现在他需要使用他的新密码登录.

我试过了:

flash.message = "You may now login with your new password"
redirect (controller: 'logout')
Run Code Online (Sandbox Code Playgroud)

事情是Logout控制器重定向到:

redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl
Run Code Online (Sandbox Code Playgroud)

当用户明确注销并返回主页时,我的flash消息不再存在.任何想法如何使其工作或可能是一些解决方法?

Bur*_*ith 3

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

flash.message = "You may now login with your new password"
redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl
Run Code Online (Sandbox Code Playgroud)

  • 这真的有效吗?当我尝试过时,它没有。如果我重定向到“filterProcessesUrl”以及“flash.message”,则 Flash 消息可用于“filterProcessesUrl”,但它会重定向到“logout.afterLogoutUrl”,然后在第二次重定向中丢失任何 Flash 消息。这个 4 年历史的 grails 问题讨论了它 http://jira.grails.org/browse/GRAILS-2336 为了让它工作,我认为“filterProcessesUrl”需要查看它是否收到了“flash”。 message`,然后再次设置它以确保它被传播。 (3认同)