问题描述
我想从我的 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()
。