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