Java 如何将/ibm\u security\u logout的extern JSP/HTML片段嵌入到JSF中?
我尝试在JSF项目中实现Java 如何将/ibm\u security\u logout的extern JSP/HTML片段嵌入到JSF中?,java,jsp,jsf,logout,Java,Jsp,Jsf,Logout,我尝试在JSF项目中实现/ibm\u security\u logout逻辑。 对于我应该使用的注销方式有一些要求 它应符合以下格式: <FORM METHOD=POST ACTION="<%=request.getContextPath()%>/ibm_security_logout" NAME="LogoutForm"> <INPUT TYPE="HIDDEN" NAME="logoutExitPage" VALUE="/../weblogin/logout?d
/ibm\u security\u logout
逻辑。
对于我应该使用的注销方式有一些要求
它应符合以下格式:
<FORM METHOD=POST ACTION="<%=request.getContextPath()%>/ibm_security_logout"
NAME="LogoutForm">
<INPUT TYPE="HIDDEN" NAME="logoutExitPage"
VALUE="/../weblogin/logout?dest=/myapp/goodbye.jsp">
<INPUT TYPE="submit" NAME="logout" VALUE="Logout">
</FORM>
编辑
{request.contextPath}
=localhost:9080/MyProject登录页面=localhost:9080/weblogin/Login?webapp=/MyProject(登录页面通过外部框架管理)
注销也通过外部框架进行管理。因此,URL必须符合此值=“/../weblogin/logout?dest=/weblogin/login?webapp=/MyProject” 我用下面的代码试过了,但没用
<form id="logout" action="#{request.contextPath}/ibm_security_logout"
method="post">
<input type="hidden" name="logoutExitPage"
value="/../weblogin/logout?dest=/weblogin/login?webapp=/MyProject">
<a href="#" onclick="document.getElementById('logout').submit()">Logout_NEU</a>
</form>
使用
外部上下文#invalidateSession()
单独使用是不够的。如果您使用了ibm的登录功能,则绝对需要直接发布到/ibm\u security\u logout
。这不仅会使会话无效,还会清除SSO cookie和LPTA身份验证。否则,用户在无效后仍可能自动登录
您可以在JSF中使用纯HTML。我只想中和那些90年代风格的大写标记/属性,因为大写/camelcase HTML标记/属性在XHTML中无效(我假设您使用的是Facelets;您的问题历史记录至少确认您使用的是Facelets)
或者如果你真的需要一个链接来提交表单
请注意,
logoutExitPage
必须表示注销后登录页的URL。它不一定要精确表示/../weblogin/logout?dest=/myapp/bye.jsp
。这只是一个示例。它是否也会使jsf会话无效?/ibm\u security\u logout
已经使会话无效(在清除SSO cookie和LPTA身份验证之间)。因此,如果您只使用ExternalContext#invalidateSession()
,您仍然会在客户端中得到一个悬空的SSO cookie,在缓存中得到LPTA身份验证。@DaDaDom::)即使如此,在使用基于XML的Facelets作为默认视图技术的JSF2中,它也会抛出XML解析错误/警告,因为按照XHTML名称空间http://www.w3.org/1999/xhtml
。还需要第二个链接。请查看我的更新。请描述“它不起作用”“从开发人员的角度来看,而不是从最终用户的角度来看。作为第一步,HTTP POST请求是否使用所需参数触发?
<h:commandLink value="Log Out" action="#{sessionController.logout}" />
public void logout() throws IOException {
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.invalidateSession();
ec.redirect("/../weblogin/logout?dest=/myapp/goodbye.jsp");
}
<form id="logout" action="#{request.contextPath}/ibm_security_logout"
method="post">
<input type="hidden" name="logoutExitPage"
value="/../weblogin/logout?dest=/weblogin/login?webapp=/MyProject">
<a href="#" onclick="document.getElementById('logout').submit()">Logout_NEU</a>
</form>