Hallo,
ich möchte gerne mit Fetch API abfragen, ob das Login fehlgeschlagen wurde.
Falls der User falsche Daten eingibt, möchte ich in der Browser-Konsole den String "Access denied" ausgeben.
Komisch ist, dass mir der Browser einen leeren String ausgibt. Wie kann ich machen, dass er mir "Access denied" ausgibt?
ich möchte gerne mit Fetch API abfragen, ob das Login fehlgeschlagen wurde.
Java:
package ch.yourclick.zt;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@WebServlet("/login")
public class Login extends HttpServlet {
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("username", req.getParameter("username"));
req.setAttribute("password", req.getParameter("password"));
Map<String, String> loginData = new HashMap<>();
loginData.put("string", "username");
// User is logged in
if (Objects.requireNonNull(Database.getData("SELECT * FROM users WHERE username = '" + req.getParameter("username") + "' AND password = '" + req.getParameter("password") + "'", loginData)).contains(req.getParameter("username"))) {
System.out.println("You are logged in");
HttpSession session = req.getSession();
session.setAttribute("loggedIn", true);
req.getRequestDispatcher("/backend/welcome.jsp").forward(req, resp);
}
// Access denied
else {
PrintWriter writer = new PrintWriter(System.out);
writer.write("Access denied!"); // <-- Das möchte ich ausgeben
}
}
}
Javascript:
const log = console.log.bind(console);
document.getElementById('login').addEventListener('submit', (e) => {
e.preventDefault();
fetch('login', {
method: 'POST'
})
.then((response) => {
return response.text();
})
.then((data) => {
log(data);
})
.catch(err => {
console.error(err);
})
});
Komisch ist, dass mir der Browser einen leeren String ausgibt. Wie kann ich machen, dass er mir "Access denied" ausgibt?