Grails 如何清除ApacheShiro会话?

Grails 如何清除ApacheShiro会话?,grails,shiro,Grails,Shiro,我使用ApacheShiro会话进行身份验证和授权 我可以使用不同的用户、权限和角色登录,但实际的问题是,每当我调用一个注销函数时,看起来shiro会话并没有消失 显而易见的是,每当我点击“注销”时,它就会出现在主屏幕上,如果我使用“浏览器后退”按钮,我可以返回到最后一个屏幕 我的注销函数如下所示 // Log the user out of the application. SecurityUtils.subject?.logout() webRequest.getCurrentRequest

我使用ApacheShiro会话进行身份验证和授权

我可以使用不同的用户、权限和角色登录,但实际的问题是,每当我调用一个注销函数时,看起来shiro会话并没有消失

显而易见的是,每当我点击“注销”时,它就会出现在主屏幕上,如果我使用“浏览器后退”按钮,我可以返回到最后一个屏幕

我的注销函数如下所示

// Log the user out of the application.
SecurityUtils.subject?.logout()
webRequest.getCurrentRequest().session = null
session.invalidate()    

// For now, redirect back to the home page.
redirect(uri: "/")

在这方面的任何帮助都非常感谢在过去的两天里为此所做的努力

这对我来说适用于shiro插件的1.1.4版

def logOut() {
    SecurityUtils.subject?.logout()

    redirect(uri: "/")
}

这是由于浏览器缓存造成的。您可以在ShiroSecurityFilters文件中配置重置浏览器缓存

 class ShiroSecurityFilters {
 def filters = {
    requestHeadersFilter(controller: '*', action: '*') {
             after = {
            response.setHeader("Pragma", "no-cache")
            response.setDateHeader("Expires", 0)
            response.setHeader("Cache-Control", "no-cache")
            response.addHeader("Cache-Control", "no-store")
        }
    }

您使用的是什么版本的Grails shiro插件?我使用的是shiro 1.2.0Am,也使用了与注销时相同的代码,但shiro的会话仍然处于活动状态。如果我使用浏览器的“后退”按钮,我可以返回到上一页。如果我离开,比如说大约1小时,shior的会议超时,一切正常