我可以通过以下代码点击外部链接进行SSO(单点登录)。 SSO有效,但在网址上可以看到用户名/密码。 https://example.org/index.php?userLogin=user1&userPassword=pass123
<h:outputLink styleClass="ui-menuitem-link ui-corner-all"
value="https://example.org/index.php">
<h:outputText value="Ext Tool" />
<h:outputText styleClass="ui-icon ui-icon-suitcase"
style="float:left" rendered="#{userBean.in}" />
<f:param name="userLogin" value="#{userBean.user.eUser}" />
<f:param name="userPassword" value="#{userBean.user.ePass}" />
</h:outputLink>
我也试过如下......
<h:commandLink action="#{userBean.eSubmit()}">
<h:outputText value="Ext Tool" />
<f:param name="userLogin" value="#{userBean.user.eUser}" />
<f:param name="userPassword" value="#{userBean.user.ePass}" />
</h:commandLink>
在bean中..我的编码就像这样
public void eSubmit() throws IOException{
FacesContext fc = FacesContext.getCurrentInstance();
fc.getExternalContext().redirect("https://example.org/index.php?userLogin=" + user.getUser() + "&userPassword=" + user.getPass());
}
即使对于带有commandLink的上述代码,也可以在URL中看到UserName和密码。请引导我在URL中隐藏密码。
是JSF的新手,所以请帮助我理解......
答案 0 :(得分:1)
重定向指示客户端在指定的URL上创建新的GET请求。这就是为什么你看到它反映在浏览器的地址栏中。
对于对外部站点执行POST,您不一定需要JSF。您对更新JSF模型或调用JSF操作不感兴趣。只需使用纯HTML表单。
<form method="post" action="https://example.org/index.php">
<input type="hidden" name="userLogin" value="#{userBean.user.eUser}" />
<input type="hidden" name="userPassword" value="#{userBean.user.ePass}" />
<input type="submit" value="Ext Tool" />
</form>
如果有必要,可以使用一些CSS来使提交按钮看起来像一个链接,或者让一些JS让链接提交该表单。