2015-10-14 7 views
0

tl; dr: Мой вопрос действительно может быть возобновлен до того, как я обновляю страницу через String (когда параметры получения неизвестны)?redirect после входа в систему для входа в систему

Я два сценария входа в систему пользователей:

  • неаутентифицированное доступа пользователя на страницу, которая защищена он перенаправлены на страницу входа в систему. При входе в систему он перенаправляется на страницу, к которой он прежде всего пытался получить доступ.
  • неаутентифицированного пользователь нажимает на кнопке на моей странице, если пользователь неаутентифицированный будет отображать журнал в диалоговом

, например, как это:

<!-- user connected --> 
<p:commandButton action="#{pollVoteBean.vote}" value="#{strings.Vote}" rendered="#{userNav.isUserConnected}"/> 
<!-- user disconnected --> 
<h:panelGroup rendered="#{!userNav.isUserConnected}"> 
    <p:commandButton type="button" value="#{strings.Vote}" onclick="PF('regSign').show()"/> 
<!-- if the user clicks here a log in dialog appears and he can log in. --> 
</h:panelGroup> 

Когда неаутентифицированное пользователь щелкает это выглядит:

enter image description here

Это то, что я использую на странице входа, чтобы перенаправить пользователя :

lastUrl = getCorrectUrl(((String) FacesContext.getCurrentInstance() 
     .getExternalContext().getRequestMap() 
     .get(RequestDispatcher.FORWARD_REQUEST_URI))); 

if (null != lastUrl && !"/signin".equals(lastUrl)) 
    return lastUrl + "?faces-redirect=true"; 
else 
    return "/news?faces-redirect=true"; 

Однако для диалога я хотел бы обновить страницу. Как я могу изменить код выше, чтобы он выполнял оба сценария?

Я почти там, но я не могу получить правильный URL с параметрами (которые являются неизвестными, конечно):

lastUrl = getCorrectUrl(((String) FacesContext.getCurrentInstance() 
      .getExternalContext().getRequestMap() 
      .get(RequestDispatcher.FORWARD_REQUEST_URI))); 
currentUrl = FacesContext.getCurrentInstance().getViewRoot() 
     .getViewId(); 
if ("/signin".equals(currentUrl)) { 
    if (null != lastUrl && !"/signin".equals(lastUrl)) 
     return lastUrl + "?faces-redirect=true"; 
    else 
     return "/news?faces-redirect=true"; 
} else { 
    return currentUrl + "?faces-redirect=true"; 
} 

(коды выше предполагает пользователь правильно аутентификацию). Также мой диалог dynamic="true".

+0

@ Tiny В итоге я просто прошел легкий путь и разделил свою функцию на две части. Не могли бы вы рассказать мне, почему вы сказали, что это не правдоподобное требование? – Ced

ответ

0

Я закончил разделить метод на два, так как я не нашел простого способа сделать это.

public String signInUser() { 
    if (trySignIn()) { 
     if (null != lastUrl && !"/signin".equals(lastUrl)) 
      return lastUrl + "?faces-redirect=true"; 
     else 
      return "/news?faces-redirect=true"; 
    } else { 
     return "signin.xhtml?faces-redirect=true"; 
    } 
} 

public void signInFromDlg() { 
    trySignIn(); 
} 

Затем обновить javascript oncomplete.

Смежные вопросы