In meinem Login-Servlet zu funktionieren scheint, ist der letzte Code von doPost
wie folgt:Die Java-Servlet-Http nicht sofort
<%@page import="fi.vakuutustiedot.controllers.Config"%>
<%@page import="fi.vakuutustiedot.model.User"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%
if (session == null) {
request.getRequestDispatcher("index.html").forward(request, response);
return;
}
User user = (User) session.getAttribute(Config.CURRENT_USER_PARAMETER);
if (user == null) {
session.invalidate();
request.getRequestDispatcher("index.html").forward(request, response);
return;
}
%>
<!DOCTYPE html>
...
:
HttpSession session = request.getSession();
session.setAttribute(Config.CURRENT_USER_PARAMETER, user);
request.getRequestDispatcher("app.jsp").forward(request, response);
Was app.jsp
kommt, wird es wie folgt
Mein Problem ist das folgende Szenario:
- Ich login über das HTML-Formular, das mit meinem lo verbunden ist Gin Servlet. Das Login-Servlet erstellt einen
HttpSession
und fügt ein Attribut für das Objekt hinzu, das den betreffenden Benutzer beschreibt. - Schließlich geht es weiter zu
app.jsp
.
Das Problem ist, dass, wenn ich zu app.jsp
bin angemeldet und weitergeleitet, sehe ich alles, was ich bin sehen soll, aber wenn ich .../app.jsp
in der Adressleiste eingeben und die Eingabetaste drückt es Umleitungen an index.html
! Allerdings, wenn ich app.jsp
die zweite, dritte, usw. Zeit besuchen, ist alles in Ordnung und keine unechten Umleitung zu index.html
geschieht.
Ist diese Lösung aus Sicherheitsgründen angemessen?
beschloß ich das Problem, indem Sie die folgende Zeile in dem Login-Servlet hinzu:
HttpSession session = request.getSession();
request.setAttribute(Config.CURRENT_USER_PARAMETER, user); // <- The new added line.
session.setAttribute(Config.CURRENT_USER_PARAMETER, user);
request.getRequestDispatcher("app.jsp").forward(request, response);
Und in app.jsp
ich habe:
<%@page import="fi.vakuutustiedot.controllers.Config"%>
<%@page import="fi.vakuutustiedot.model.User"%>
<%@page import="fi.vakuutustiedot.model.UserType"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%! User user = null; %>
<%
if (session == null) {
request.getRequestDispatcher("no_session.html").forward(request, response);
return;
}
user = (User) session.getAttribute(Config.CURRENT_USER_PARAMETER);
if (user == null) {
user = (User) request.getAttribute(Config.CURRENT_USER_PARAMETER);
}
if (user == null) {
request.getRequestDispatcher("test.jsp").forward(request, response);
return;
}
%>
<!DOCTYPE html>
...
meine eigene Frage zu beantworten
Im Login-Servlet Alles was ich tue ist:
HttpSession session = request.getSession();
session.setAttribute(Config.CURRENT_USER_PARAMETER, user);
response.sendRedirect("app.jsp");
Auf diese Weise ist das Benutzerobjekt direkt von der session
verfügbar und ich muss diesen Benutzer nicht auf das Anfrageobjekt setzen.