Schreiben Sie einen authorization-filter für meine web-Anwendung(JSF 2.0)
Folgenden einige Ratschläge, habe ich mich dazu entschlossen meine eigene Autorisierungs-filter für meine web-app(ich bin nicht mit container-managed-security-also muss ich es so machen).
Dies ist mein Erster filter, so bin ich ein wenig verwirrt, wie sollte ich es umsetzen.
Dies ist, was ich getan habe so weit:
package filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import entities.Role;
public class RestrictPageFilter implements Filter {
FilterConfig fc;
public void init(FilterConfig filterConfig) throws ServletException {
//The easiest way to initialize the filter
fc = filterConfig;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
String pageRequested = req.getRequestURL().toString();
Role currentUser = (Role) session.getAttribute("userRole");
//Pages that are allowed with no need to login:
//-faq.xhtml
//-index.jsp
//-login.xhtml
//-main.xhtml
//-registration.xhtml
//NOW pages that are restricted depending on the type of user
//buyoffer.xhtml(Only BUYER)
//sellerpanel.xhtml(Only SELLER)
//adminpanel.xhtml(Only ADMINISTRATOR)
//HOW SHOULD I IMPLEMENT THAT??
if(currentUser != null && currentUser.getType().equals("BUYER")) {
}
if(currentUser != null && currentUser.getType().equals("SELLER")) {
}
if(currentUser != null && currentUser.getType().equals("ADMINISTRATOR")) {
}
}
public void destroy() {
//Not needed
}
}
Als Sie sehen, dass ich Kommentare hinterlassen dort, wo ich stecken geblieben. Kann mir jemand eine hand Weiterverarbeitung dieser filter oder geben Sie mir einige pseudo-code-Tipps, wie soll ich es beenden?
Sah ich einige Beispiele rund um das web, aber keine von Ihnen verschiedenen filtern, je nach user-Typ.
Schlecht zu schätzen Ihre Hilfe 🙂
Update
Erstellte ich eine xml-Datei, um mir zu helfen die Filterung(Es befindet sich in WEB-INF/classes)
<access>
<buyer>
<page>buyoffer.xhtml</page>
<page>faq.xhtml</page>
<page>index.jsp</page>
<page>login.xhtml</page>
<page>main.xhtml</page>
<page>registrationSucceded.xhtml</page>
</buyer>
<seller>
<page>sellerpanel.xhtml</page>
<page>faq.xhtml</page>
<page>index.jsp</page>
<page>login.xhtml</page>
<page>main.xhtml</page>
<page>registrationSucceded.xhtml</page>
</seller>
<administrator>
<page>sellerpanel.xhtml</page>
<page>faq.xhtml</page>
<page>index.jsp</page>
<page>login.xhtml</page>
<page>main.xhtml</page>
<page>registrationSucceded.xhtml</page>
</administrator>
</access>
<!-- THE REGISTRATION PAGES SHOULD NOT BE ACCESSIBLE IF THE USER IS LOGGED IN -->
Lese ich die Datei aus dem init () - Methode.()
public class RestrictPageFilter implements Filter {
private FilterConfig fc;
private InputStream in;
public void init(FilterConfig filterConfig) throws ServletException {
//The easiest way to initialize the filter
fc = filterConfig;
//Get the file that contains the allowed pages
in = this.getClass().getResourceAsStream("/allowedpages.xml");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
String pageRequested = req.getRequestURL().toString();
//Get the value of the current logged user
Role currentUser = (Role) session.getAttribute("userRole");
if (currentUser != null) {
}
}
public void destroy() {
//Not needed
}
}
Ja, dass ist eines der Dinge, ich bin verwirrt. Ich eröffnete eine Frage zu diesem Thema: stackoverflow.com/questions/5663581/... ich entschied mich JAXP-parser
InformationsquelleAutor sfrj | 2011-04-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie brauchen, um den Zugang zu ermöglichen rufen Sie einfach die
wenn Sie verhindern möchten, dass Benutzer dann rufen Sie
Einen Vorschlag
Machen konfigurierbar über irgendeine Art von XML-Eigenschaften-Datei , dein code scheint nicht hart zu mir, morgen gibt es möglicherweise eine weitere Seite Hinzugefügt, so dass Sie brauchen, um neu zu kompilieren Filter.
Wenn erlaubt dann Einfach mit Spring Security hat es nette features. Auch werden Sie nicht neu erfinden das Rad
Sie können festlegen, Seiten, die zulässig sind, für die sagen, die Rolle ADMIN in XML nun, Lesen Sie in der Karte auf die Initialisierung des Contextes und Zeit verwenden, die Karte in den Filter. SpringSecurity tut dies
Ok ich werde versuchen, dass. Wo sollte ich speichern, XML-Datei, kann es neben web.xml Datei?
Auch, wenn Sie eigene Filter , dann speichern Sie die Datei irgendwo, Aber besser, es direkt in der Klasse Weg, wenn maven die Struktur, dann legen Sie es in Ressourcen, oder aber im Standard-Paket, so dass es gehen sollte
WEB-INF/classes
I dont use maven, ich lege es direkt auf den Klassenpfad auf WEB-INF/classes. Wie soll ich darauf zugreifen? Was wäre die einfachste Möglichkeit, es in den filter? Könntest du mir ein paar Tipps geben?
InformationsquelleAutor Jigar Joshi