我开发了一个目前托管在tomcat 8.5.I5中的网络应用程序。我正在尝试用IDP实现SSO,在这里我使用了过滤器。成功登录后,我将用户名设置如下。
HttpSession httpSession = request.getSession();
httpSession.setAttribute(SESSION_USERNAME, subject);
验证时使用以下代码。
HttpServletRequest request = (HttpServletRequest) req;
HttpSession session = request.getSession();
String userName = (String) session.getAttribute(SSOHelper.SESSION_USERNAME);
if (userName == null && request.getRequestURI().contains("dashboard.xhtml")) {
注销按以下方式实施
request.getSession()无效();
问题是这只是第一次有效。第二次它继续询问登录。似乎会话是根据请求创建的。
答案 0 :(得分:0)
当您定义没有点(。)的主机名时,问题似乎就出现了。例如,我使用localhost进行测试。使用域名malaka.com向hosts文件添加条目并用于访问Web应用程序后,问题已解决。