Shiro 登出页面:“没有带有 id 的会话” - Shiro

问题描述

我想从我的 p:commandButton 正常注销:

我的后端 bean 中有这个函数

public void logout() {
            SecurityUtils.getSubject().logout();
            
            SavedRequest savedRequest = WebUtils.getAndClearSavedRequest(Faces.getRequest());

            if (savedRequest == null) {
                Faces.redirect("/common/login.jsf");
            } else {
                Faces.redirect(savedRequest.getRequestUrl());
            }
}

但我明白了:

引起:org.apache.shiro.session.UnkNownSessionException:没有ID为[b4a41562-0d9e-4fc9-9d9d-ef7724d8efad]的会话

知道如何解决这个问题吗? 我也在使用 Omnifaces 库。

知道出了什么问题吗?

我正在使用: Shiro 1.7.0 和 Omnifaces 3.10.1

解决方法

Shiro 的 Subject.logout() 实质上清除了会话 (session.invalidate())。如果会话已被清除,您将无法再次清除它。

如果您使用的是 Shiro's Logout Filter,则无需额外调用 logout()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...