gpt4 book ai didi

JSF Siteminder 注销

转载 作者:行者123 更新时间:2023-12-02 07:40:06 28 4
gpt4 key购买 nike

环境

  • Richfaces 3.3.3
  • JSF 1.2
  • 站点记录器

要求

用户输入所需的申请地址。 Siteminder 拦截并询问用户名和密码。客户提供凭据。客户使用应用程序并单击注销/退出按钮。应用程序销毁 session 并将 302 重定向到相同的应用程序地址,并且 Siteminder 应再次拦截。

问题

我正在尝试从从 siteminder 登录的 richfaces 应用程序中注销。注销后,它会返回到应用程序的主页,而不是转到 siteminder 的登录页面。似乎它正在终止应用程序 session ,但没有终止站点管理器 session 。有没有办法注销 siteminder?

代码

public String logout() {
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
HttpSession session = (HttpSession)ec.getSession(false);

if (session != null) {
session.invalidate();
}

try {
String redirectPath = "https://abcd.xyz.com/context/start.jsf";
ec.redirect(redirectPath);
} catch (IOException e) {
e.printStackTrace();
}

return null;

日志

com.ibm.ws.webcontainer.servlet.ServletWrapper doDestroy SRVE0253I [主机名] [/context] [uri]:销毁成功。com.ibm.ws.webcontainer.servlet.ServletWrapper init SRVE0242I [主机名] [/上下文] [uri]:初始化成功。

最佳答案

如果 header 中的 SM_USER 值为 null/空,我会在 servlet 过滤器中使用以下代码强制进行重定向。

if(servletPath.trim().equals("/login/logout.do")){
log.debug("User Logged Out. Redirecting to " + contextPath + homeLink);
RequestDispatcher rd = request.getRequestDispatcher(homeLink);
rd.forward(request, response);
return;
}

关于JSF Siteminder 注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937070/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com