Java-Filtern, umleiten von Benutzern, die nicht angemeldet-login-Seite
War ich versucht zu machen, einen filter zu verhindern, dass Benutzer, die nicht angemeldet sind Zugriff auf bestimmte Seiten.Für dies habe ich einen filter der Klasse mit dem folgenden doFilter
Methode
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String url = request.getRequestURI();
boolean allowedRequest = false;
System.out.println(url);
if(urlList.contains(url)) {
allowedRequest = true;
System.out.println("in list");
}
if (!allowedRequest) {
Object o = request.getSession().getAttribute("UserInfo");
if (null == o) {
System.out.println("Hey i am in");
response.sendRedirect("/login.jsp");
}
}
chain.doFilter(req, res);
} //end of doFilter
Zu ermöglichen, die Seiten, die doesnot muss der Benutzer angemeldet sein, erstellte ich eine arraylist url-Liste in init()
Nun eine sehr seltsame dumme Sache passiert. angenommen, ich habe zwei Seiten zu Hause.jsp und dcr.jsp. Wenn ich versuche, auf zu Hause.jsp-ohne Anmeldung die bin ich erfolgreich umgeleitet, um sich einzuloggen.jsp-aber, wenn ich versuche, Zugriff auf dcr.jsp ist es nicht umgeleitet werden, obwohl es in die Schleife if(null == o) das kann ich verstehen, denn ich bin immer, dass die Linie gedruckt in der Konsole.Dies ist die Ausgabe, die ich in den server
Dies ist die Ausgabe, die ich in der server
/dcrmaintenance.jsp
Hey i am in
Das sagt mir, dass die null == a wahr ist.
Die Seite dcr.jsp auf ein session-Objekt und da der Benutzer nicht eingeloggt ist java.lang.NullPointerException wie erwartet, aber ich kann nicht verstehen, warum die Umleitung nicht statt, auch nach Eintritt in die Schleife.Wenn jemand pt, wo ich bin, einen Fehler zu machen, würde es geschätzt werden.
InformationsquelleAutor Shamik | 2012-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach
response.sendRedirect("/login.jsp");
tunreturn;
.InformationsquelleAutor Joop Eggen
Glaube ich, dass Sie entweder aufrufen sendRedirect ODER doFilter. E. g.
InformationsquelleAutor erikxiv
Was andere Filter ausgeführt werden, in Ihrer Anwendung? Senden Sie das redirect, aber weiterhin mit der filter-Kette. Ich denke, ein weiterer filter ist die änderung der Reaktion wieder. Wenn Sie bleiben Sie mit dem filter einfach zurück nach der Umleitung.
Anstelle der filter, die Sie in einer Java WebApp können Sie definieren Ihre Sicherheits-Einschränkungen in der web.xml. Haben Sie einen Blick auf Einschränkungen.
Kurzes Beispiel:
InformationsquelleAutor proko
Ich denke, dass müssen Sie ändern Ihre web.xml...
Sie haben, um Ihre begrenzten Ressourcen auf den entsprechenden Ordner. Auf diese Weise Servlet-Filter einschränken, welche Dateien ordnet in "restricted" - Ordner.(http://www.developer.com/security/article.php/3467801/Securing-J2EE-Applications-with-a-Servlet-Filter.htm) (Und ich denke, dass der Grund der Verwendung von Filter-Servlet schreiben, eigenes Berechtigungssystem. - auf diese Weise haben Sie nicht zu definieren, Ihre Einschränkungen in der Sicherheit web.xml zu können, definieren Sie es in der Datenbank ;))) )
InformationsquelleAutor Musa