我使用apache shiro会话进行身份验证和授权。
能够以不同的用户和权限和角色登录,但实际问题是每当我调用signOut函数时,shiro会话似乎都没有被删除。
显而易见的是,无论何时我点击退出它都会出现在主屏幕上,如果我使用浏览器后退按钮,我可以回到最后一个屏幕。
我的signOut功能如下所示
// 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: "/")
对此的任何帮助都非常感谢过去2天的挣扎
答案 0 :(得分:1)
这适用于shiro插件的1.1.4版本。
def logOut() {
SecurityUtils.subject?.logout()
redirect(uri: "/")
}
答案 1 :(得分:1)
这是由于浏览器缓存造成的。您可以配置为在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")
}
}