Mam serwlet i stronę HTML. Jak mogę uniemożliwić użytkownikowi naciśnięcie przycisku Wstecz w przeglądarce po wylogowaniu? Czytałem to samo pytanie w stackoverflow, ale odpowiedzi używają historii przeglądarki wyłączonej za pomocą skryptu java lub używania strony - brak pamięci podręcznej w nagłówkach HTTP. W jaki sposób możemy go zaimplementować za pomocą serwletów, które uniemożliwiają cofnięcie działania, nagłówek http bez bufora jest bezużyteczny, ponieważ Firefox mówi, że strona wygasła, gdy jest odświeżana dwa razy, ponownie wyświetlana jest bezpieczna strona.sesja serwletów, po wylogowaniu, po naciśnięciu przycisku Wstecz przeglądarki ponownie wyświetlana jest bezpieczna strona
Zrobiłem w pewnym sensie próbkę metody tylko na próbę (nie rzeczywistą) Moja nazwa użytkownika i hasło są wysyłane do serwletu ze strony HTML, którą serwlet przechowuje w sesji, jeśli hasło i nazwa użytkownika są poprawne. Gdy ponownie żądana jest bezpieczna strona, jeśli sesja istnieje, wyświetlana jest bezpieczna strona i identyfikator użytkownika wylogowuje się z sesji, gdy wyświetlana jest strona logowania, z wyjątkiem sytuacji, gdy wylogowanie się nie powiedzie, jeśli użytkownik kliknie przycisk przeglądarki.
W jaki sposób możemy zapobiec wyświetlaniu zawartości przez bezpieczny serwlet po wylogowaniu, a następnie naciśnięciu przycisku Wstecz w przeglądarce?
src od welcome.html
<html>
<body>
<form method="POST" action="Sessionexample">
<div align="center">
<table border="1" style="border-collapse: collapse">
<tr>
<td>Username</td>
<td><input type="text" name="username" size="20"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="text" name="password" size="20"></td>
</tr>
<tr>
<td height="24"> </td>
<td height="24"> </td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Submit" name="B1"></td>
</tr>
</table>
</div>
</form>
</body>
</html>
src od serwletu
public class Sessionexample extends HttpServlet implements Servlet , Filter {
private static final long serialVersionUID = 1L;
public String username =null, password=null;
public HttpSession session ;
public PrintWriter pw;
int do_get =0 ;
/**
* Default constructor.
*/
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession(false);
if (session == null || session.getAttribute("username") == null) {
response.sendRedirect("welcome.html"); // No logged-in user found, so redirect to login page.
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0);
} else {
chain.doFilter(req, res);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
do_get=1;
pw = response.getWriter();
session=request.getSession(false);
try
{
if(request.getParameter("action")!=null)
{
if(request.getParameter("action").equals("logout"))
{
session = request.getSession(true);
session.setAttribute("username", "");
session.setAttribute("password", "");
session.invalidate();
response.sendRedirect("welcome.html");
return;
}
}
else
if(session !=null)
{
if((String)session.getAttribute(username)!=null)
username = (String)session.getAttribute("username").toString();
if((String)session.getAttribute("password") !=null)
password =session.getAttribute("password").toString();
pw.write("not new-");
serviced(request,response);
}
}
catch(Exception ex)
{
pw.write("Error-"+ex.getMessage());
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
if(request.getParameter("username")!=null && request.getParameter("password")!=null)
{
username = request.getParameter("username").toString();
password = request.getParameter("password").toString();
}
serviced(request,response);
}
protected void serviced(HttpServletRequest request, HttpServletResponse response) throws IOException
{
response.setContentType("text/html");
pw = response.getWriter();
if(username !=null && password !=null)
if(username.equals("admin") && password.equals("a"))
{
try
{
if(do_get==0)
{
session = request.getSession(true);
session.setAttribute("username", "admin");
session.setAttribute("password", "a");
}
pw.write("You are logged in : "+username+" <br/> "+"<a href='?action=logout'><h1> Logout </h1> </a>");
}
catch(Exception ex)
{
response.sendRedirect("welcome.html");
}
}
else
{
response.sendRedirect("welcome.html");
}
else
response.sendRedirect("welcome.html");
}
@Override
public boolean accept(Object arg0) throws IOException {
// TODO Auto-generated method stub
return false;
}
}
myślę łańcuchowym jest potrzebne !! – cc4re