JSF ссылка на внешний сайт без указания имени пользователя и пароля в URL
Мне удалось сделать SSO(единый вход) по нажатию на внешнюю ссылку из кода ниже. SSO работает, но имя пользователя / пароль видно по URL. 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>
В бобе.. Моя кодировка такая
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. Пожалуйста, направьте меня, чтобы скрыть пароль в URL.
Я новичок в JSF, поэтому, пожалуйста, помогите мне понять...
1 ответ
Перенаправление указывает клиенту создать новый запрос GET по указанному URL. Вот почему вы видите, что это отражается в адресной строке браузера.
Что касается выполнения POST для внешнего сайта, вам не обязательно нужен JSF здесь. Вам не нужно ни обновлять модель JSF, ни вызывать действие JSF. Просто используйте простую форму HTML POST.
<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, чтобы ссылка могла отправить эту форму.