PDA

View Full Version : [JAVA] Logout in webapp


Otaking
22-12-2010, 15:42
Salve a tutti, sto cercando di fare un semplicissimo logout in java in un'applicazione web ma non funziona come dovrebbe, ovvero..... se clicco la prima volta non succede nulla O__O debuggando entra nella action e fa tutto quello che deve fare ma...in pratica non succede niente. Cliccando dalla seconda volta in poi, tutto funziona alla perfezione. Vorrei capire il perchè di questo difetto.......

Vi posto un po' di codice:

LogoutAction.java
public class LogoutAction extends HttpServlet {

public LogoutAction() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getSession().invalidate();
request.getRequestDispatcher("/index.jsp").forward(request, response);
}

}

web.xml

.........
<servlet>
<description></description>
<display-name>Logout</display-name>
<servlet-name>Logout</servlet-name>
<servlet-class>it.wave.wpc.fe.bean.session.LogoutAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Logout</servlet-name>
<url-pattern>/faces/pages/index.php</url-pattern>
</servlet-mapping>
.........

...e questa è il link che si trova nelle pagine dove si può effettuare il logout:
<a href="index.php">Logout</a>

(non fateci caso all'estensione .php , era giusto per... XD)

Avete idea del perchè succeda quel problema al primo click?

gokan
23-12-2010, 11:38
Ciao, che tipo di autenticazione usi (vedi file web.xml)?
Se utilizzi quella di tipo BASIC (piuttosto che quella di tipo FORM) e quindi immetti username/password direttamente dalla finestrella del browser, potrebbe essere un problema relativo alla cache del browser.
Puoi verificare se effettivamente funziona il logout (anche nel caso del primo tentativo) chiudendo il browser e riaprendolo.
Nel caso in cui tu non fai memorizzare le credenziali al browser, dovresti verificare che non appena riaccedi alla tua applicazione, il browser ti chieda nuovamente user/passwd. Se ciò avviene allora significa che il logout è andato a buon fine.
Spero di essere stato chiaro :)