【发布时间】:2016-12-02 12:50:34
【问题描述】:
在我的 Vaadin 应用程序中,我想要一个注销按钮,它将我重定向到登录屏幕并强制用户输入凭据。我使用 WebSphere 作为应用程序服务器,登录是通过 http 基本身份验证完成的。
到目前为止,我已经尝试过:
VaadinRequest vaadinRequest = VaadinService.getCurrentRequest();
VaadinServletRequest vaadinServletRequest = (VaadinServletRequest) vaadinRequest;
HttpServletRequest hsRequest = vaadinServletRequest.getHttpServletRequest();
try
{
hsRequest.logout();
}
catch (ServletException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
还有这个:
UI.getCurrent().getPage().setLocation("/framework42/S42FwWeb/?restartApplication");
我也知道我可以使用
UI.getCurrent().getPage().setLocation("/pkmslogout");
通过 WebSeal 执行注销。我希望注销也可以在我们不使用 WebSeal 的开发环境中工作。
非常感谢任何帮助!
【问题讨论】:
-
尝试在 http 会话上调用 .invalidate()。
-
如果您使用基本身份验证,则无法注销,因为浏览器每次都会重新发送身份验证详细信息。您必须关闭浏览器或切换到表单登录。
-
@Gas 难道不能用 NoCacheFilter 来做吗?
-
@Marco - 缓存与身份验证完全不同。我不知道 NoCacheFilter 到底是什么,但看起来它可以防止页面被缓存,这与浏览器重新发送身份验证数据无关。所以不,过滤器是不可能的。
-
NoCacheFilter 阻止用户在注销后有意义地使用浏览器后退按钮。我不再需要过滤器,因为我有更好的解决方案,正如您在我的回答中看到的那样。感谢您的帮助!
标签: java session websphere vaadin logout